gpt4 book ai didi

javascript - XMLhttprequest.send() 不向 PHP 发送变量

转载 作者:行者123 更新时间:2023-11-29 23:43:12 25 4
gpt4 key购买 nike

我有这个代码。

JavaScript

function removeAndReplace(id, sezione){
var xhttp = new XMLHttpRequest();

xhttp.onreadystatechange = function() {
if (xhttp.readyState == 4 && xhttp.status == 200) {
alert(xhttp.responseText);
}
}

xhttp.open("POST", "removeAndReplace.php", true);
xhttp.send("id=" + id + "&sezione=" + sezione);
}

PHP

 print_r($_POST);

$id = $_POST['id'];
$sezione = $_POST['sezione'];
.
.
.

HTML

<input type="button" value="Elimina" class="btn_elimina" onClick="removeAndReplace(1, 'Shopping')">

我想在单击按钮后调用 PHP 函数,所以我了解到更好的方法是使用 AJAX。

Firefox 和 Chrome 返回此错误消息:

Array ( )
Notice: Undefined index: id in C:\pweb\tools\xampp\htdocs\Bazaar\php\removeAndReplace.php on line 6

Notice: Undefined index: sezione in C:\pweb\tools\xampp\htdocs\Bazaar\php\removeAndReplace.php on line 7

第 6 行是:$id = $_POST['id'];第 7 行是:$sezione = $_POST['sezione'];

我哪里错了?

最佳答案

您将数据转储到请求正文中,而没有告诉服务器它是如何格式化的。

由于 PHP 不知道您以它理解的编码向它发送了数据,因此它会忽略请求正文。

你需要添加:

xhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");

... 在您发送请求之前。


放在一边

虽然您的硬编码数据不含特殊字符,但最好对数据进行编码。这将使您以后不再头疼:

xhttp.send("id=" + encodeURIComponent(id) + "&sezione=" + encodeURIComponent(sezione));

您可以省去手动编码数据和使用 FormData API 设置自己的内容类型的麻烦:

var data = new FormData();
data.append("id", id);
data.append("sezione", sezione);

xhttp.open("POST", "removeAndReplace.php", true);
xhttp.send(data);

关于javascript - XMLhttprequest.send() 不向 PHP 发送变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44716434/

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