簡體   English   中英

使用JQuery,AJAX和PHP提交表單

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM