提取api不发送POST数据
问题描述:
我第一次尝试提取API,我试图将变量发布到PHP脚本。我做了这个与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();
}
答
工作jQuery代码
数据:{名:名}
...所以当你使用jQuery时,你发送WWW URL Form Encoded data(默认的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
+0
你说得对,这是FormData问题!谢谢 –
如何定义正在使用的'name'的值 –
“这返回给我未定义的索引'name'。” - 哪里?是PHP响应(使这[重复])(https://stackoverflow.com/questions/4261133/php-notice-undefined-variable-notice-undefined-index-and-notice-undef))?这是一个JavaScript错误? – Quentin
“我做了与jQuery.ajax()相同的工作” - 工作代码是什么样的?如果我们看不到它,很难说你改变了什么。 – Quentin