2012-12-02 62 views
0

有人可以讓我知道爲什麼這個AJAX Post請求不起作用。發送的默認listId爲0. savedList由ListJSON和ListName組成。代碼如下。AJAX請求INSERT和UPDATE不起作用

$.post('save.php', {"id":listId, "list":JSON.stringify(savedList), 
function(savedListId) { 
    listId = savedListId; 
    alert('List saved'); 
    // Refresh to a) get out of edit mode and b) give a bookmarkable URL 
    window.location = 'list.html?id='+listId; 
}); 

服務器端是作爲初級講座:

if(empty($_POST['list'])) { 
header('HTTP/1.0 400 Bad Request', true, 400); 
exit('No list sent'); 
} 

if(! $decodedList = json_decode($_POST['list'])) { 
header('HTTP/1.0 400 Bad Request', true, 400); 
exit('List does not decode'); 
} 


if(empty($_POST['id']) || $_POST['id']=="null") { 
$sql = "INSERT INTO Lists SET ListJSON = ?, ListName = ?"; 
$query = $mysqli->prepare($sql); 
$query->bind_param("ss", $_POST['list'], $decodedList->listName); 
$query->execute(); 


header('Content-type: application/json'); 
exit('"'.$mysqli->insert_id.'"'); 
} else { 
$sql = "UPDATE Lists SET ListJSON = ?, ListName = ? WHERE ListID = ?"; 
$query = $mysqli->prepare($sql); 
$query->bind_param("ssi", $_POST['list'], $decodedList->listName, $_POST['id']); 

$query->execute(); 


header('Content-type: application/json'); 
exit('"'.(int)$_POST['id'].'"'); 
} 
+0

對我來說這看起來很合理。添加錯誤檢查? – Barmar

+0

'$ .post'調用中缺少一個右大括號。這只是一個剪切和粘貼錯誤,或者在原始代碼中? – Barmar

+0

@Barmar雅花邊大括號是一個剪切和粘貼錯誤。 – Anonymous

回答

0

嘗試的$_POST['id']前面添加(int)。我相信JavaScript是以字符串的形式發送id,但是您正嘗試使用mysqli將其更新爲int。