2017-06-14 3 views
-1

フェッチAPIを初めて使用しようとしていますが、PHPスクリプトに変数をPOSTしようとしています。私は同じことをjQuery.ajax()でやっていました。フェッチapiがPOSTデータを送信しない

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(); 
} 
+0

どのようにリクエストの本文に使用されている 'name'の値を定義しましたか? –

+0

"これは私に返されます未定義インデックス 'name'。 " - どこ?それはPHPの応答です(この[重複](https://stackoverflow.com/questions/4261133/php-notice-undefined-variable-notice-undefined-index-and-notice-undef))? JavaScriptエラーですか? – Quentin

+0

"これはjQuery.ajax()と同じように動作しました" - 作業コードはどのように見えますか?私たちがそれを見ることができなければ、あなたが変更したものを壊したことを伝えるのは難しいです。 – Quentin

答えて

2

作業jQueryのコード

データ:{名:名}

… そう jQueryを使用すると、WWW URLフォームのエンコードされたデータ(デフォルトのjQueryエンコーディング)が送信されます。

body: JSON.stringify({name: name}) 
...しかし、あなたが取得するために切り替わったとき、あなたはまた、JSONにオブジェクトを変換します。

JSONはWWW URL形式でエンコードされていません!

JSONを期待するためにPHPを書き直していない可能性があります。おそらく$_POSTから読み込もうとしています(PHPはデフォルトでエンコードされたJSON要求をサポートしていないため空です)。

PHPがデフォルトで解析するようにエンコードされるFormDataオブジェクトを作成できます。

+0

FormDataに問題があったのは間違いありませんでした。ありがとう –

関連する問題