[英]Submitting form using JQuery, AJAX and PHP
我有一個使用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);
您應該檢查返回的結果。 您可以通過以下代碼執行此操作:
$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注入的信息,因為您的代碼容易受到攻擊。
我認為您在dataString
中的addnew.js
應該是transMonth1='+ transMonth + '&transDay1='+ transDay + '&transYear1='...
,
否則, $transDay2
, $transYear2
將為null
,如果您的transDay
或更多在mysql中設置NOT NULL
,則會發生mysql錯誤。 :)
我在插入語句中看到一個問題,插入到anotherSample(transMonth,transDay,transMonth,transYear,....)值('$ transMonth2','$ transDay2','$ transYear2,.....)'transMonth'重復兩次,並用七個值重復八列。
在您的addnew.js文件中,您應該在每個鍵/值對之間使用與號(&),如下所示:
var dataString = 'transMonth1='+ transMonth + '&transDay1='+ transDay + '&transYear1='+ transYear + '&voucherNum1='+ voucherNum + '&expType1='+ expType + '&acctsPayable1='+ acctsPayable + '&amount1='+ amount;
這樣,當您在addnew.php文件中讀取變量時,將確保每個變量都有一個值。
檢查addnew.php
獲取的值
並回顯mysql_error($connection)
以檢查是否發生mysql錯誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.