我第一次尝试使用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
关于javascript - 提取API不发送POST数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44549246/