Функции Javascript и PHP

Можно ли вызвать функцию из PHP, используя onsubmit из JavaScript? Если бы кто-нибудь дал мне пример того, как это будет сделано?

 function addOrder(){ $con = mysql_connect("localhost", "146687", "password"); if(!$con){ die('Could not connect: ' . mysql_error()) } $sql = "INSERT INTO orders ((user, 1st row, 2nd row, 3rd row, 4th row) VALUES ($session->username,1st variable, 2nd variable, 3rd variable, 4th variable))"; mysql_query($sql,$con) if(mysql_query($sql,$con)){ echo "Your order has been added"; }else{ echo "There was an error adding your order to the databse: " . mysql_error(); } } 

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

Related of "Функции Javascript и PHP"

Вы не можете вызвать функцию PHP из Javascript …

Javascript – это клиентский язык (он выполняется в веб-браузере после получения веб-страницы), в то время как PHP находится на стороне сервера (он выполняется до отображения веб-страницы). У вас нет способа сделать один звонок другим.

… но вы можете получить результат внешнего скрипта PHP

Существует функция Javascript, называемая xhttprequest, которая позволяет вам вызывать любой скрипт на веб-сервере и получать его ответ. Поэтому, чтобы решить вашу проблему, вы можете создать PHP-скрипт, который выводит некоторый текст (или XML, или JSON), а затем вызывает его, и вы анализируете ответ с помощью Javascript.

Этот процесс – это то, что мы называем AJAX , и гораздо легче сделать это с помощью хорошего инструмента, чем вы. Взгляните на JQuery , это мощная, но простая в использовании библиотека Javascript, в которой есть встроенные помощники AJAX.

Пример с JQuery (клиентская сторона):

 $.ajax({ type: "POST", // the request type. You most likely going to use POST url: "your_php_script.php", // the script path on the server side data: "name=John&location=Boston", // here you put you http param you want to be able to retrieve in $_POST success: function(msg) { alert( "Data Saved: " + msg ); // what you do once the request is completed } 

Похоже, вы хотите AJAX .

Это слишком большая тема для одного ответа, но это должно заставить вас идти.

В принципе, Javascript отправит HTTP-запрос на PHP-скрипт на вашем сервере, а затем сделает что-то с ответом. JSON – это то, о чем вы тоже захотите узнать.

Косвенно можно вызвать функцию PHP с помощью JavaScript. Как уже говорили другие люди, вы захотите сделать какой-то запрос – это необязательно должно быть Ajax. Это может быть синхронно. Не зная точно, что вы пытаетесь выполнить, вот что я хотел бы предложить:

  • Прикрепите обработчик события к опции отправки формы (или используйте стандартную отправку, если вы не собираетесь использовать Ajax)
  • Объедините все параметры, которые необходимо передать функции PHP либо в POST, либо в строке запроса адреса на страницу.
  • Выполните пожарный запрос (либо асинхронно, либо через submit)
  • В скрипте PHP, который является объектом запроса, вытащите параметры из $ _ POST или $ _ GET.
  • Вызовите функцию PHP, которая вам нужна с параметрами.
  • Повторите ответ и проанализируйте его по мере необходимости после завершения запроса.

Опять же, это немного общее, но так же и ваш вопрос. Надеюсь, это дает какое-то направление.

Ближе всего вы получите xajax, который позволит вам обернуть функцию PHP в вызов AJAX. Я использовал его совсем немного, прежде чем начал работать с Zend Framework и усложнил его реализацию в OO-способе.

С помощью xajax вы пишете функцию PHP, которая выполняет всю вашу обычную логику, а затем возвращает объект ObjectResponse, который манипулирует браузером через AJAX (предупреждения, изменение HTML, CSS и т. Д.). Вы регистрируете свою функцию с помощью xajax, а затем xajax выплевывает некоторый javascript в раздел вашего HTML.

В вашем HTML вы просто называете эту функцию javascript, которую генерирует xajax, и она заботится об остальном через AJAX.

Вы захотите сделать что-то вроде:

 <form action="add_order.php" method="POST" id="add_order_form"> <!-- all of your form fields --> <input type='submit' value='Add Order'> </form> <script type="text/javascript"> $("#add_order_form").submit(function() { var action = $("#add_order_form").attr("action"); var data = $("#add_order_form").serialize(); $.post(action, data, function(json, status) { if(status == 'success') { alert(json.message); } else { alert('Something went wrong.'); } }, "json"); return false; }); </script> 

И тогда у вас есть файл PHP с именем add_order.php с чем-то вроде:

 $success = 0; $con = mysql_connect("localhost", "146687", "password"); if(!$con) { $message = 'Could not connect to the database.'; } else { // SANITIZE DATA BEFORE INSERTING INTO DATABASE // LOOK INTO MYSQL_REAL_ESCAPE_STRING AT LEAST, // PREFERABLY INTO PREPARED STATEMENTS $query_ok = mysql_query("INSERT INTO `orders` ...."); if($query_ok) { $success = 1; $message = "Order added."; } else { $message = "Unable to save information"; } } print json_encode(array('success' => $success, 'message' => $message)); 

Чтобы эта красота работала, вам нужно будет перейти на сайт jQuery , загрузить ее и включить файл jquery.js.

Я не тестировал выше, но он должен работать. Удачи.

Извините, ваш вопрос слишком прост. В зависимости от того, какую функцию PHP вы хотите вызывать на formubmit, Ajax вам не поможет. Знаете ли вы о фундаментальных (клиентских / серверных) различиях между PHP и JavaScript?

Да, еще один отличный и простой учебник по изучению ajax:

http://24ways.org/2005/easy-ajax-with-prototype/

Prototype – это еще одна вещь, которую я рекомендую, если вы не ушли далеко от своего проекта и должны вернуть много функциональности.

http://www.prototypejs.org/

Удачи!