Javascript和PHP的function
是否有可能使用JavaScript从onsubmit
从PHP调用一个函数? 如果有的话,有人可以给我一个例子,说明如何做?
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(); } }
这是我想打电话的function。 它是一个订购系统,你input你想要的每件商品的数量,点击提交,它应该添加订单到表格。
你不能从Javascript调用PHP函数…
Javascript是一种客户端语言(它在Web浏览器上执行,接收到网页后),而PHP在服务器端(它是在网页呈现之前执行的)。 你无法打电话给另一个人。
…但你可以得到一个外部的PHP脚本的结果
有一个叫做xhttprequest的Javascript函数,它允许你调用Web服务器上的任何脚本并得到它的答案。 因此,要解决您的问题,您可以创build一个输出一些文本(或XML或JSON)的PHP脚本,然后调用它,然后使用Javascript分析答案。
这个过程就是我们所说的AJAX ,用一个好的工具比你自己做起来容易得多。 看看JQuery ,它是function强大但易于使用的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也许是你想要了解的东西。
使用JavaScript调用PHP函数是间接可能的。 正如其他人已经提到,你会想要做一些types的请求 – 这不一定是Ajax。 它可能是同步的。 不知道你想要完成什么,这是我会build议:
- 将一个事件处理程序附加到表单的提交选项(如果不打算使用Ajax,则使用标准提交)
- 将任何需要传递给PHP函数的参数封装在POST中或页面地址的查询string中。
- 发起请求(asynchronous或通过提交)
- 在作为请求目标的PHP脚本中,从$ _ POST或$ _ GET中取出参数。
- 用参数调用你需要的PHP函数。
- 回应回应,并在请求完成后根据需要进行parsing。
再一次,这是一个普遍的问题,但你的问题也是如此。 希望这给了某种方向。
最接近你将得到的将是xajax ,这将让你包装一个PHP函数到一个AJAX调用。 在我开始使用Zend Framework之前,我已经使用了相当多的东西,发现它很难以OO方式实现。
使用xajax,您可以编写一个PHP函数来执行所有常规逻辑,然后返回一个通过AJAX操作浏览器的ObjectResponse对象(警报框,更改HTML,CSS等)。 你用xajax注册你的函数,然后xajax会吐出一些JavaScript到你的HTML的部分。
在你的HTML中,你只需要调用xajax生成的javascript函数,然后通过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>
然后有一个名为add_order.php
的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文件。
我没有testing过,但应该可以。 祝你好运。
对不起,你的问题太基本了。 取决于你想在formubmit上使用哪个 PHP函数,Ajax不会帮助你。 您是否知道PHP和JavaScript之间的基本(客户端/服务器端)差异?
是的,另一个伟大而简单的学习Ajax教程是:
http://24ways.org/2005/easy-ajax-with-prototype/
原型是我推荐的另一件事情,如果你没有远离你的项目,需要恢复很多function。
祝你好运!