2 回答
TA贡献1848条经验 获得超10个赞
data是一个对象,您将其转换为字符串 ( "[object Object]"),因此实际数据在您将其发送到 PHP 之前会丢失。
只需将对象本身传递给 jQuery,而无需将其转换为字符串:
data: data,
然后 jQuery 将使用 PHP 将自动解码并用于填充的标准 Form Url 编码$_POST。
<?php
header("Content-Type: text/plain");
echo $_POST['v_Post'];
?>
然后它将在 JS 中可用:
success: function(response_data) {
alert(response_data);
},
TA贡献1770条经验 获得超3个赞
如果您检查,则"data=" + data计算结果为data=[object Object],因为对象在连接时被强制转换为字符串。所以这不是我们想要的。
事实上,JSON 可以提供帮助,因为它为复杂数据形成了一个漂亮、统一的接口。此外,您不想自己指定参数编码(data=...作为字符串),因为 jQuery 可以为您完成,如果您只传递一个包含参数的对象。我还冒昧地将参数重命名为payload,因此我们没有两个不同的东西,既命名data又混淆了答案。你会这样使用它:
$.ajax({
...
data: {
payload: JSON.stringify(data)
},
...
});
然后在 PHP 中,
$payload = json_decode($_POST['payload']);
我们也可以直接将 JSON 作为 POST 请求正文发送,而不是作为 POST 参数,但 PHP 对访问它并不是很好。你可以在这里看到更多。
但是,您没有复杂的数据结构,您有三个平面变量 - 可以简单地作为三个 POST 变量传输。在这种情况下,这就足够了:
$.ajax({
...
data: data,
...
});
在 PHP 中:
$v_Post = $_POST['v_Post'];
$x = $_POST['x'];
$y = $_POST['y'];
添加回答
举报
