我在追蹤$ .ajax/PHP/MySQL數據庫插入錯誤的原因時遇到了很多困難。
這裏是jQuery的一面:
function SaveNewBranch(newBranchName, dataString) {
console.log('In function SaveNewBranch(newBranchName, dataString). Value of
newBranchName: ' + newBranchName + '. Value of dataString: ' +
dataString + '.');
$.ajax({
type: 'POST',
url: '../scripts/branchAdmin.php',
data: dataString,
dataType: 'json',
success: function(newBranchID) {
console.log('from server: ' . newBranchID);
// Clear the page
ClearPageForNewSelection();
PopulateBranchDropdown(newBranchID);
},
error: function(xhr, status, error) {
console.log('datastring: ' + dataString);
alert('An error occurred while attempting to save the branch to the
database. jqXHR object: ' + xhr + '. Status: ' + status + '. Error
message: ' + error + '. An error log with more details has been
created on the server. If the error persists, contact your site
administrator.');
}
});
} // End Save New Branch
這裏的PHP代碼:
if(isset($_POST['newBranchName']) &&
isset($_POST['newBranchAddr1']) &&
isset($_POST['newBranchAddr2']) &&
isset($_POST['newBranchCity']) &&
isset($_POST['newBranchState']) &&
isset($_POST['newBranchZip']) &&
isset($_POST['newBranchPhone']) &&
isset($_POST['newBranchFax']) &&
isset($_POST['newBranchUrl'])) {
require_once('dbConnect.php');
$log->lwrite('name: ' . mysqli_real_escape_string($dbc,$_POST['newBranchName']) .
', addr1: ' . mysqli_real_escape_string($dbc,$_POST['newBranchAddr1']) . ',
addr2: ' . mysqli_real_escape_string($dbc,$_POST['newBranchAddr2']) . ',
city: ' . mysqli_real_escape_string($dbc,$_POST['newBranchCity']) . ',
state: ' .$_POST['newBranchState'] . ', zip: ' .
mysqli_real_escape_string($dbc,$_POST['newBranchZip']) . ', phone: ' .
mysqli_real_escape_string($dbc,$_POST['newBranchPhone']) . ', fax: ' .
mysqli_real_escape_string($dbc,$_POST['newBranchFax']) . ', url: ' .
mysqli_real_escape_string($dbc,$_POST['newBranchUrl']));
$_POST['newBranchState'] == '0' ? $newBranchState = '' : $newBranchState =
strtoupper(mysqli_real_escape_string($dbc,$_POST['newBranchState']));
$queryInsertNewBranch = "INSERT INTO branches (name, address1, address2, city,
state, zipCode, phone, fax, url) VALUES ('" .
mysqli_real_escape_string($dbc,$_POST['newBranchName']) . "', '" .
mysqli_real_escape_string($dbc,$_POST['newBranchAddr1']) . "', '" .
mysqli_real_escape_string($dbc,$_POST['newBranchAddr2']) . "', '" .
mysqli_real_escape_string($dbc,$_POST['newBranchCity']) . "', '" .
newBranchState . "', '" .
mysqli_real_escape_string($dbc,$_POST['newBranchZip']) .
"', '" . mysqli_real_escape_string($dbc,$_POST['newBranchPhone']) . "', '" .
mysqli_real_escape_string($dbc,$_POST['newBranchFax']) . "', '" .
mysqli_real_escape_string($dbc,$_POST['newBranchUrl']) . "')";
$log->lwrite('new branch insert: ' . $queryInsertNewBranch);
$resultInsertNewBranch = @mysqli_query($dbc, $queryInsertNewBranch);
...
我已經證實,良好的數據是越來越通過「dataString」的控制檯輸出傳遞到PHP腳本。
輸出到調音臺進行測試插入:
newBranchName: A Test Branch, datastring: newBranchName=A Test branch&
newBranchAddr1=123 StateSt.&newBranchAddr2=#123&
newBranchCity=Anywhere&newBranchState=MN&newBranchZip=12343&
newBranchPhone=555-555-1212&newBranchFax=555-555-2121&newBranchUrl=minnesota
我還證實,PHP腳本通過檢查第一$對數> lwrite線在PHP腳本獲得好數據。
輸出到日誌中相同的插入測試:
new branch insert: INSERT INTO branches (name, address1, address2, city, state,
zipCode, phone, fax, url) VALUES ('A Test Branch', '123 State St.', '#123',
'Anywhere', 'MN', '12343', '555-555-1212', '555-555-2121', 'minnesota')
最後$對數> lwrite項(新枝插)永遠不會被寫入日誌文件。
同樣在jQuery端,錯誤函數被激發,顯示警告框。這三個對象的值有:
jqXHR object: [object Object]
Status: parsererror
Message: Unexpected token e
不管我怎麼進入,是以數據的形式,我總是得到相同的結果:INSERT從不運行,並在誤差函數的警告框顯示 - 每次都有相同的信息。
我已經多次查看代碼的每一個細節,尋找一個錯誤的空間或雙引號應該是單引號等等。而且我不能爲我的生活找到什麼問題是!
如果jqXHR對象可能有線索,我不知道如何獲取該元素。你是怎樣做的?
我(和我的客戶)會非常感謝我能找到的任何幫助!
感謝您的幫助......
檢查響應文本與您的瀏覽器開發工具。 – 2013-02-28 15:42:03
從php刪除@所以你可以看到錯誤,我jquery部分如何dataString格式化 – ddjikic 2013-02-28 15:43:22
你試過運行新的分支插入mysql查詢手動?這可能只是一個MySQL錯誤。 – Keeleon 2013-02-28 15:45:19