Php jqueryajax调用赢得';按下后退按钮后,更新mysql
我有一个表单,它使用ajax将数据提交到mysql数据库,然后将表单发送到PayPal 但是,提交后,如果单击浏览器上的“上一步”按钮,更改一些字段,然后再次提交表单,则不会更新mysql数据,也不会创建新条目 以下是我的Jquery:Php jqueryajax调用赢得';按下后退按钮后,更新mysql,php,jquery,mysql,ajax,back-button,Php,Jquery,Mysql,Ajax,Back Button,我有一个表单,它使用ajax将数据提交到mysql数据库,然后将表单发送到PayPal 但是,提交后,如果单击浏览器上的“上一步”按钮,更改一些字段,然后再次提交表单,则不会更新mysql数据,也不会创建新条目 以下是我的Jquery: $j(".submit").click(function() { var hasError = false; var order_id = $j('input[name="custom"]').val(); var
$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();
?>
您确实应该使用POST而不是GET,但无论如何,我会检查以下内容:
如果jQuery在单击“上一步”并更改信息后正在执行ajax调用,那么您可能应该放置一个console.log或一个警报调用来查看javascript是否失败
在PHP中添加一些回音和一些出口,然后逐行进行,看看它能走多远。既然你已经有了它,你只需在浏览器中加载另一个标签,然后更改你需要的信息
如果jQuery中的$j是您应该能够只执行$j.serialize()的表单,那么它是一个方便的函数,可以在一个字符串中获取所有表单数据
伙计
您是否已将jquery附在
$j(function(){
});
确保它仅在dom就绪时执行
另外,我假设您已经手动将jquery从“$”重命名为“$j”,以防止名称空间冲突。如果不是这样的话,它应该是$(函数)而不是$j(函数)
除此之外,以下是一些代码提示:
步骤1:将所有“name”字段重命名为“dataString”对象中希望它们的名称。例如,将input[name=from]更改为名称“order\u from”
步骤2:
使用此代码。
$j(函数(){
$j(“.submit”)。单击(函数(){
var hasError=false;
if(hasError==false){
var dataString=$j('form').serialize()
}));
您会注意到我在url上添加了一个随机变量“uu=random”,这通常是jquery的内置函数,但为了确保它不会缓存响应,可以使用此方法强制执行
祝你好运。如果这不起作用,请在不重命名新页面上的jquery的情况下尝试该脚本。如果这样做有效,则该脚本与页面上的其他脚本之间可能会发生冲突。结果表明,问题是由于我使用了iFrame。我可以通过使页面不使用iFrame来修复该问题。谢谢大家的帮助 嘿,伙计,你能看到使用Firebug控制台的调用吗?这是实际的PHP脚本吗?听说过SQL注入吗?如果我在表单元素上放置onSubmit='return false;',它会工作,但是如果表单被提交,它似乎不会再工作了…我尝试将表单的目标更改为一个新窗口,这似乎也能工作。但是,我需要t发生在同一窗口中。似乎这可能是iframe问题。此脚本包含在iframe中。。。
$j.ajax({ type: "GET", cache: false, url: "/gc_process.php?uu="+Math.random(), data: dataString, success: function() { } });
} else {
return false;
}
});