jQuery ajax调用不会在按下按钮后更新mysql
我有一个表单使用ajax将数据提交给mysql数据库,然后将表单发送到PayPal。jQuery ajax调用不会在按下按钮后更新mysql
但是,在提交后,如果我单击浏览器上的后退按钮,更改一些字段,然后再次提交表单,mysql数据不会更新,也不会创建新条目。
这里是我的Jquery:
$j(".submit").click(function() {
var hasError = false;
var order_id = $j('input[name="custom"]').val();
var order_amount = $j('input[name="amount"]').val();
var service_type = $j('input[name="item_name"]').val();
var order_to = $j('input[name="to"]').val();
var order_from = $j('input[name="from"]').val();
var order_message = $j('textarea#message').val();
if(hasError == false) {
var dataString = 'order_id='+ order_id + '&order_amount=' + order_amount + '&service_type=' + service_type + '&order_to=' + order_to + '&order_from=' + order_from + '&order_message=' + order_message;
$j.ajax({ type: "GET", cache: false, url: "/gc_process.php", data: dataString, success: function() { } });
} else {
return false;
}
});
这里是我的PHP脚本的样子:
<?php
// Make a MySQL Connection
include('dbconnect.php');
// Get data
$order_id = $_GET['order_id'];
$amount = $_GET['order_amount'];
$type = $_GET['service_type'];
$to = $_GET['order_to'];
$from = $_GET['order_from'];
$message = $_GET['order_message'];
// Insert a row of information into the table
mysql_query("REPLACE INTO gift_certificates (order_id, order_type, amount, order_to, order_from, order_message) VALUES('$order_id', '$type', '$amount', '$to', '$from', '$message')");
mysql_close();
?>
任何想法?
原来,问题是由于我使用iframe的事实。我能够通过使页面没有iframe来解决问题。感谢您的帮助!
你真的应该使用POST而不是GET,但无论如何,我会检查以下内容:
- 这jQuery是执行单击返回并更改信息后Ajax调用,你应该把任一个console.log或一个警报调用来查看javascript是否失败
- 在PHP中添加一些回声和一些退出,并逐行查看,看它有多远。既然你把它作为get,你可以在浏览器中加载另一个选项卡,并更改你需要的信息。
- 如果你的jQuery $ j是你应该能够只是做$ j.serialize()的形式,这是一个方便的功能,以获得一个字符串
伴侣的所有形式的数据,
你封闭在
$j(function(){
});
你jQuery来确保它只有当DOM准备好执行?
另外,我假设你已经手动将jquery从“$”更名为“$ j”,以防止名称空间冲突。如果不是这种情况,应该是$(功能,而不是附加$ J(功能
从反正开,这里有一些提示,为您的代码:
第1步:重命名所有的“名称”字段是你希望他们成为你的“dataString”对象名称改变。例如输入[名称=从]有名为“order_from”
步骤2: 使用此代码 附加$ J(函数( ){if(hasError == false){ var dataString = $ j('f('。submit')。click(function(){var1Error = false; ) ORM')序列化();
$j.ajax({ type: "GET", cache: false, url: "/gc_process.php?uu="+Math.random(), data: dataString, success: function() { } });
} else {
return false;
}
});
}); 你会注意到我在URL上打了一个随机变量“uu = random”,这通常是jquery的一个内置函数,但为了确保它没有缓存响应,你可以使用这种方法强制它。
祝你好运。如果这不起作用,请在没有重新命名jquery的情况下尝试该脚本。看看是否有效,你可能会在页面上的其他脚本之间发生冲突
嘿,队友,你能看到使用Firebug控制台的电话吗? – 2010-12-06 01:26:23
这是实际的PHP脚本吗?听说过SQL注入? – Hamish 2010-12-06 01:26:42