[英]Updating MySQL Database with ajax
我試圖通過單擊按鈕將JS數組發送到.php文件,並使用發送的數組在單擊時運行php文件的代碼。
我有一個按鈕:
<button id="submit" class="button1" >Submit<span></span></button>
我嘗試使用以下命令運行此JS ajax:
$('#submit').click(function() {
$.ajax({
method: "POST",
url: "submit.php",
data: selectedImageArray
}).done(function( msg ) {
alert( "Data Saved: " + msg );
});
});
在我的Submit.php文件中,我連接到數據庫,然后執行以下操作:
$array = $_POST['selectedImageArray'];
$sql = $dbh->prepare("INSERT INTO pending_trades (steam_id, trade_items, is_giving, is_receiving, has_started) VALUES (:steamid, :itemlist, '1', '0', '0')");
$sql->bindParam(':steamid', $steamprofile['steamid']);
$sql->bindParam(':itemlist', $array);
$sql->execute();
}
當我單擊“提交”按鈕時,出現消息“數據已保存”,但是數據庫沒有任何反應。 是否應該單擊按鈕運行Submit.php代碼?
您的JS語法錯誤。 另外,由於#submit
是ID,因此不需要使用button
限定它。
您的代碼應為:
$('#submit').click(function() {
$.ajax({
method: "POST",
url: "submit.php",
data: selectedImageArray
}).done(function( msg ) {
alert( "Data Saved: " + msg );
});
});
編輯1:
我看到您已經將上述代碼合並到了JS中。 現在在服務器端解決您的問題(PHP / SQL)。
首先,為什么要解碼$_POST[selectedImageArray]
然后重新編碼? 對我來說沒有意義。
其次, $steamprofile['steamid']
的值是多少?
第三,您的SQL表的架構是什么? 您確定您沒有違反任何唯一/不為空/ fk約束嗎?
幫自己一個忙,並在服務器端使用調試/日志記錄解決方案。 就像將調試行打印到日志文件中一樣簡單,因此您以后可以檢查以了解發生了什么。
我會做什么:
$_POST[selectedImageArray]
。 應該是一個字符串。 $array
的值。 它應該是一個數組。 $sql->execute();
返回bool
(成功bool
TRUE)。 在腳本中使用它可以返回成功或失敗消息。 $sql->errorCode();
的值$sql->errorCode();
失敗。 有了以上所有內容,您就應該有足夠的能力來解決哪里出了問題。
$('#submit').click(function(){
$.ajax({
method: "POST",
url: "submit.php",
data: {selectedImageArray: selectedImageArray}, // this is supposed to be JSON
.done(function( msg ) {
alert( "Data Saved: " + msg );
});
});
});
和
$_POST['selectedImageArray'] // see the quotes
我想steam_id
是具有自動增量功能的主鍵,因此,如果您嘗試將具有相同steam_id
值的行插入數據庫,則可能無法添加數據。
若要以更好的方式進行調試,請嘗試在服務器中生成查詢並回顯它。 然后嘗試在MySQL控制台中運行相同的查詢以找到響應。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.