1

我有一个 php 页面,我使用 jquery 函数根据复选框、单选按钮和文本框的值获取动态值。发生了什么是我使用了两个警报

1.) 警报(数据);

2.)警报(grand_total);

在我的 Jquery 函数的 ajax 部分中,只是为了确保我在“grand_total”中得到什么值。一切正常,警报很好,数据被正确插入到表中。

然后我从函数中删除了警报,过了一段时间我再次开始测试整个站点,我发现 grand_total 的值没有被插入到 mysql 表中。

我再次发出这些警报以检查出了什么问题,一切又开始正常工作。再次删除,问题又开始了。知道出了什么问题吗?

这是来自"xyz.php"的 JQUERY func 的代码片段:

<script type="text/javascript">
$(document).ready(function() {

    var grand_total = 0;

    $("input").live("change keyup", function() {

        $("#Totalcost").val(function() {

            var total = 0;
            $("input:checked").each(function() {

                total += parseInt($(this).val(), 10);
            });
               var textVal = parseInt($("#min").val(), 10) || 0;

               grand_total = total + textVal;

               return grand_total;
        });

     });
         $("#next").live('click', function() {

        $.ajax({
            url: 'xyz_sql.php',
            type: 'POST',
            data: {
                grand_total: grand_total
            },
            success: function(data) {
                // do something;

            }
        });

    });

   });

对应的HTML代码:

       <form method="post" id="logoform3" action="xyz_sql.php">
       <input type="text" name="Totalcost" id="Totalcost"  disabled/>       
       <input type="submit" id="Next" name="next"/>

这是来自*"xyz_sql.php"*的代码:

<?php
session_start();

include ("config.php");

$uid = $_SESSION['uid'];

$total= mysql_real_escape_string($_POST['grand_total']);

$sql="INSERT INTO form2 (total,uid)VALUES('$total','$uid');";

if($total > 0){
$res = mysql_query($sql);
}

if($res)
{
echo "<script> window.location.replace('abc.php') </script>";
}
else {
echo "<script> window.location.replace('xyz.php') </script>";
}
?>

最后但并非最不重要的一点:echo " window.location.replace('abc.php') "; 无论数据是否插入表中,都不会执行。

4

2 回答 2

3

首先,您提交表单之类的表单,而不是 ajax - 因为单击提交按钮时没有 preventDefault 操作。这就是为什么它看起来是正确的。但在这种形式中,没有名为“grand_total”的输入。所以你的 php 脚本失败了。

其次 - 您将 ajax 绑定到 id 为“next”的元素 - 但是在您的 html 中没有具有该 id 的元素,这就是为什么永远不会调用 ajax 的原因。

于 2013-09-05T10:31:17.763 回答
0

Роман Савуляк 的解决方案很好,但还不够。
您应该在 php 文件中将 $total 变量转换为整数,并使用ifisset()来为您的代码提供动力,所以我将重写您的 php 代码:

<?php
session_start();
include ("config.php");
if(isset($_SESSION['uid']))
{
    $uid = $_SESSION['uid'];
    if(isset($_POST['grand_total']))
    {
        $total= mysql_real_escape_string($_POST['grand_total']);
        $sql="INSERT INTO form2(total,uid) VALUES('".$total."','".$uid."')";
        if((int)$total > 0)
        {
            if(mysql_query($sql))
            {
              echo "your output that will pass to ajax done() function as data";
            }
            else 
            {
                echo "your output that will pass to ajax done() function as data";
            }
        }
    }
}

您还可以在每个if语句之后传递输出,并完成 js ajax 功能,例如:

$.ajax({
        url: 'xyz_sql.php',
        type: 'POST',
        data: {
            grand_total: grand_total
        }
}).done(function(data) {
            console.log(data);   //or everything
});
于 2013-09-05T11:45:22.587 回答