0

この AJAX Post リクエストが機能しない理由を教えてください。送信されるデフォルトの listId は 0 です。savedList は ListJSON と ListName で構成されます。コードは以下です。

$.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'].'"');
}
4

1 に答える 1

0

(int)の前に追加してみてください$_POST['id']。JavaScript は id を文字列として送信していると思いますが、mysqli で int として更新しようとしています。

于 2013-08-07T18:45:04.530 に答える