2017-06-14 1 views
-1

J'essaye l'API Fetch pour la première fois et j'essaye de POSTER une variable à un script PHP. J'ai fait la même chose avec jQuery.ajax() qui a fonctionné.Récupérer api n'envoie pas de données POST

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

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

Cela me renvoie Undefined index 'name'.

Qu'est-ce que je fais mal?

Le travail Code 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); 
}); 

Le script 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

comment voulez-vous défini la valeur de 'name' qui est utilisé dans le corps de la demande –

+0

« Cela me retourne à Undefined index « nom ». » - Où? Est-ce la réponse de PHP (ce qui en fait [une copie] (https://stackoverflow.com/questions/4261133/php-notice-undefined-variable-notice-undefined-index-and-notice-undef))? Est-ce une erreur JavaScript? – Quentin

+0

"J'ai fait la même chose avec jQuery.ajax() qui a fonctionné" - A quoi ressemble le code de travail? Il est difficile de dire ce que vous avez changé qui l'a cassé si nous ne pouvons pas voir cela. – Quentin

Répondre

2

Le travail Code jQuery

données: {name: name}

… alors Lorsque vous avez utilisé jQuery, vous envoyez des données codées de l'URL WWW (codage jQuery par défaut).

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

... mais quand vous êtes passé à chercher, vous aussi convertir l'objet JSON.

JSON n'est pas un formulaire d'URL WWW encodé!

Vous n'avez vraisemblablement pas réécrit le PHP pour attendre JSON, et essayez probablement de lire depuis $_POST (ce qui est vide, car PHP ne supporte pas les requêtes codées JSON par défaut).

Vous pouvez construire un objet FormData qui sera codé de telle sorte que PHP l'analyse par défaut.

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

Vous aviez raison, c'était le problème FormData! Merci –