我正在尝试将数据从JS脚本传递到PHP文件。我正在使用JQuery帖子,如下所示:
const Url2 = 'MainPage2.php?action=updatePurchaseToDB';
const data = {
action: "updatePurchaseToDB",
name: "test name"
}
//takes 3 arg, url, data to send, call back function, data in callback holds the page reqeusted in data
$.post(Url2,data, function(data, status){
console.log(`status is ${status} data : ${data}`);
alert("PHP Retrned form server: Status " + status + " Data: " + data);
});
}
这似乎可以正确执行,因为状态返回为成功。我希望达到的PHP代码:
if ($_POST['action'] == 'updatePurchaseToDB'){
echo "<script>$(`#purchaseButton`).html('Test- received data');</script>";
}
引发以下错误:未定义索引:操作
不确定为什么在URL和数据参数中声明action。
如果我通过Ajax调用尝试相同:
$.ajax({
url: 'MainPage2.php?action=updatePurchaseToDB',
type: 'POST',
success: function(data)
{
console.log(data);
}
});
同样,我从服务器收到成功的响应,并且出现相同的错误。我读了this post,但我一定读错了。
我知道有类似问题的答案分配,但是我很难找到适合自己情况的答案。
感谢输入。
$_POST
的内容是HTTP标头后的数据行。
但是您的action=updatePurchaseToDB
是请求网址的一部分。您应该通过$_GET["updatePurchaseToDB"]
访问它。
还有一个问题
echo "<script>$(`#purchaseButton`).html('Test- received data');</script>";
不是应该
echo "<script>$('#purchaseButton').html('Test- received data');</script>";
在第一种情况下,即使参数在url中或作为数据参数,您都以GET的形式调用,所以Post索引不可用。
在第二种情况下,您正在发布,但是参数'updatePurchaseToDB'是GET参数,您没有向PHP文件发送任何数据。再次,索引将不可用。
尝试:
const data = {
action: "updatePurchaseToDB",
name: "test name"
}
$.ajax({
url: 'MainPage2.php?action=updatePurchaseToDB',
type: 'POST',
data: data,
success: function(data){
console.log(data);
}
});