gpt4 book ai didi

javascript - Fetch api 不发送 POST 数据

转载 作者:行者123 更新时间:2023-12-01 03:30:47 24 4
gpt4 key购买 nike

我是第一次尝试 Fetch API,并且尝试将变量 POST 到 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();
}

最佳答案

The working jQuery code

data: { name : name}

...所以当您使用 jQuery 时,您会发送 WWW URL 表单编码数据(默认的 jQuery 编码)。

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

...但是当您切换到 fetch 时,您还将对象转换为 JSON。

JSON 不是 WWW URL 表单编码!

您可能还没有重写 PHP 以期望 JSON,并且可能正在尝试从 $_POST 读取(它是空的,因为 PHP 默认情况下不支持 JSON 编码请求) .

您可以构造一个 FormData 对象,该对象将以 PHP 默认解析的方式进行编码。

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

关于javascript - Fetch api 不发送 POST 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44549246/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com