簡體   English   中英

提取API不發送POST數據

[英]Fetch api doesn't send POST data

我第一次嘗試使用Fetch API,並且嘗試將變量發布到PHP腳本。 我使用確實起作用的jQuery.ajax()進行了同樣的操作。

var myRequest = new Request('invoeren.php', {method: 'POST', body: JSON.stringify({name: name})});

fetch(myRequest).then(function(response) {
    console.log(response);
});

這返回給我Undefined index 'name'

我究竟做錯了什么?

可用的jQuery代碼:

$.ajax({
    url: "invoeren.php",
    method: "POST",
    data: { name : name}
}).done(function( msg ) {
    console.log(msg);
}).fail(function( jqXHR, textStatus ) {
    alert( "Naam is niet ingevoerd door een probleem: " + jqXHR );
});

PHP腳本:

try {
    $dbh = new PDO('mysql:host=localhost;dbname=ajaxoef', $user, $pass);
    $stmt = $dbh->prepare('INSERT INTO names(name) VALUES (:name)');
    $stmt->bindParam(':name', $name);

    $name = json_decode($_POST['name']);
    $stmt->execute();

    echo "Naam is ingevoerd.";
} catch (PDOException $e) {
    print "Error!: " . $e->getMessage() . "<br/>";
    die();
}

有效的jQuery代碼

數據:{名稱:名稱}

…因此,當您使用jQuery時,您將發送WWW URL表單編碼數據(默認的jQuery編碼)。

 body: JSON.stringify({name: name}) 

…但是當您切換到提取時,您還將對象轉換為JSON。

JSON沒有經過WWW URL編碼!

您大概沒有重寫PHP以期望使用JSON,並且可能正試圖從$_POST讀取(此為空,因為PHP默認情況下不支持JSON編碼的請求)。

您可以構造一個FormData對象,該對象將以PHP默認解析的方式進行編碼。

var body = new FormData;
body.append("name", name);
//...
body: body

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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