Javascript-функция post и вызов php-скрипта

В html у меня есть несколько кнопок, которые автоматически создаются для каждого объекта в базе данных с определенным статусом. Каждая кнопка получает свой собственный идентификатор.

echo '<Button id="button'.$counter.'" onClick="clickedbutton('.$counter.', '.$row['OrderID'].')" >'."<center>".$row['OrderID']."<br>"."</center>".'</Button>'; 

Кнопка вызывает функцию javascript clickedbutton и дает ей номер кнопки и заказ этой кнопки.

 function clickedbutton(buttonid,orderid){ buttonid = "button" + buttonid; } 

Эта функция загружает номер кнопки и делает ее кнопкой 0, кнопкой1 и т. Д. Заказ также успешно проходит. Теперь в функции я хочу вызвать внешний php-скрипт, но также должен быть передан orderid скрипту.

 <?php //connect to database include_once('mysql_connect.php'); // Select database mysql_select_db("test") or die(mysql_error()); // SQL query $strSQL = "update orders set OrderStatus = 'In Progress' where OrderID = '" + orderid + "'"; mysql_close(); ?> 

Я знаю о защите mysqli, и все это, я подкорректирую это позже. Теперь я хочу сосредоточиться на вопросе выше, как вызвать и передать переменную orderid в phpscript.

Вам нужно будет использовать AJAX.

Только Javascript не может получить скрипт php. Вам нужно будет сделать запрос, передать переменную PHP, оценить ее и вернуть результат. Если вы используете отправку jQuery, запрос ajax довольно прост:

 $.ajax({ data: 'orderid=' + your_order_id, url: 'url_where_php_is_located.php', method: 'POST', // or GET success: function(msg) { alert(msg); } }); 

и ваш php-скрипт должен получить идентификатор заказа:

 echo $_POST['orderid']; 

Результат вернется в качестве строки в функцию успеха.

РЕДАКТИРОВАТЬ

Вы также можете использовать сокращенные функции:

 $.get('target_url', { key: 'value1', key2: 'value2' }).done(function(data) { alert(data); }); // or eventually $.post instead of $.get 

Предполагая, что вы не хотите использовать AJAX, вы можете сделать что-то подобное в своей функции clickedbutton :

 window.location.replace('path/to/page.php?orderid=' + orderid); 

а затем на странице page.php

 "...where OrderID = '" . $_GET('orderid') . "'"; 

(обратите внимание на точки для объединения строк)

Используя Ajax.

 function clickedbutton(buttonid,orderid){ $.post("page.php", { buttonid: buttonid }) .done(function(data) { alert("Data Loaded: " + data); }); } 

В php вы получаете его с $ _POST.

 //[..] previous php code $strSQL = "update orders set OrderStatus = 'In Progress' where OrderID = '" + $_POST['buttonid'] + "'"; //[..] rest of php code 

вы можете попробовать это

 var url = myurl +'?id=' + orderid; window.location.href = url; 

и на php-странице

  $strSQL = "update orders set OrderStatus = 'In Progress' where OrderID = '".mysql_real_escape_string($_GET['id'])."'"; 

редактировать

Если вы хотите загрузить файл php без обновления страницы, вы можете попробовать, как предложили друзья.

Самый простой способ – построить строку запроса и прикрепить ее к концу URL-адреса скрипта php.

 function clickedbutton(buttonid,orderid){ var url = 'script.php?'; var query = 'buttonid=' + buttonid + '&orderid=' + orderid; window.location.href = url + query } 

В php-скрипте вы можете получить доступ к параметрам следующим образом:

 <?php echo $_GET['buttonid']; echo $_GET['orderid'];