Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php jqueryajax调用赢得';按下后退按钮后,更新mysql_Php_Jquery_Mysql_Ajax_Back Button - Fatal编程技术网

Php jqueryajax调用赢得';按下后退按钮后,更新mysql

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

我有一个表单,它使用ajax将数据提交到mysql数据库,然后将表单发送到PayPal

但是,提交后,如果单击浏览器上的“上一步”按钮,更改一些字段,然后再次提交表单,则不会更新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();

?>

您确实应该使用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;
    
            }
        });