使用JQuery,AJAX和PHP提交表单

时间:2015-10-24 18:41:32

标签: javascript php jquery ajax forms

我有一个表单,使用JQuery,AJAX和PHP将其提交到数据库。问题是,每当我单击表单的submit按钮时,JavaScript警报就会说记录(表单中的数据)已成功记录(到数据库)。然后我会检查我的数据库但是没有记录数据,使数据库为空并且根本没有变化。我的问题是,脚本有问题吗?或者使用PHP代码?

这里是脚本addnew.js

$(document).ready(function() {
    $("#submit").click(function() {
    var transMonth = $("#transMonth").val();
    var transDay = $("#transDay").val();
    var transYear = $("#transYear").val();
    var voucherNum = $("#voucherNum").val();
    var expType = $("#expType").val();
    var acctsPayable = $("#acctsPayable").val();
    var amount = $("#amount").val();

    var dataString = 'transMonth1='+ transMonth + 'transDay1='+ transDay + 'transYear1='+ transYear + 'voucherNum1='+ voucherNum + 'expType1='+ expType + 'acctsPayable1='+ acctsPayable + 'amount1='+ amount;
    if(voucherNum=='') {
        alert("Please fill a valid voucher number.");
    }
    else {
        $.ajax ({
            type: "POST",
            url: "addnew.php",
            data: dataString,
            cache: false,
            success: function(result) {
                alert(result); 
            }
        });
    }
    return false;
});
});

这里是PHP代码addnew.php

<?php
$connection = mysql_connect("localhost", "root", "");
$db = mysql_select_db("mydb", $connection);

//fetch values

$transMonth2 = $_POST['transMonth1'];
$transDay2 = $_POST['transDay1'];
$transYear2 = $_POST['transYear1'];
$voucherNum2 = $_POST['voucherNum1'];
$expType2 = $_POST['expType1'];
$acctsPayable2 = $_POST['acctsPayable1'];
$amount2 = $_POST['amount1'];

//query

$query = mysql_query("insert into anotherSample(transMonth, transDay, transYear, voucherNum, expenseType, acctPayable, amount) values ('$transMonth2', '$transDay2', '$transYear2', '$voucherNum2', '$expType2', 'acctsPayable2', '$amount2')");
echo "Record added successfully";

mysql_close($connection);

5 个答案:

答案 0 :(得分:1)

您应该检查返回的结果。您可以通过以下代码执行此操作:

$result = mysql_query("insert into anotherSample(transMonth, transDay, transMonth, transYear, voucherNum, expenseType, acctPayable, amount) values ('$transMonth2', '$transDay2', '$transYear2', '$voucherNum2', '$expType2', 'acctsPayable2', '$amount2')");

if (!$result) {
    die('Invalid query: ' . mysql_error()); // only for development, in production you shouldn't print error to client!
}

echo "Record added successfully";

mysql_close($connection);

PS。另外,我建议你阅读有关SQL注入的内容,因为你的代码容易受到攻击。

答案 1 :(得分:1)

我认为dataString中的addnew.js应为transMonth1='+ transMonth + '&transDay1='+ transDay + '&transYear1='...
否则$transDay2$transYear2 ..将为null,如果您在mysql中设置transDay或更多NOT NULL,则会出现mysql错误。 :)

答案 2 :(得分:1)

我在insert语句中看到一个问题,插入到anotherSample(transMonth,transDay,transMonth,transYear,....)值('$ transMonth2','$ transDay2','$ transYear2,.....) 'transMonth'重复两次,八列重复七次。

答案 3 :(得分:1)

在你的addnew.js文件中,你应该在每个键/值对之间使用&符号(&amp;),如下所示:

var dataString = 'transMonth1='+ transMonth + '&transDay1='+ transDay + '&transYear1='+ transYear + '&voucherNum1='+ voucherNum + '&expType1='+ expType + '&acctsPayable1='+ acctsPayable + '&amount1='+ amount;

这样,当您在addnew.php文件中读取每个变量时,您将确保每个变量都有一个值。

答案 4 :(得分:0)

检查addnew.php

中的提取值

和echo mysql_error($connection)检查是否发生了mysql错误。