我有这段代码。
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会返回以下错误消息:
阵 ( )
注意: C:\ pweb \ tools \ xampp \ htdocs \ Bazaar \ php \ removeAndReplace.php 6 <未定义索引:ID登记/>
注意:未定义索引:sezione在 C\ pweb \ tools \ xampp \ htdocs \ Bazaar \ php \ removeAndReplace.php 7 < BR />
第6行是:$ id = $ _POST ['id']; 第7行是:$ sezione = $ _POST ['sezione'];
我哪里错了?
答案 0 :(得分:1)
您正在将数据转储到请求正文中,而不告诉服务器如何格式化。
由于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);