[英]Using Php, how can I access a Java Script Object I've passed by Ajax
因此,如上所述,我将访问(使用 PHP)我使用 JS 创建的 object,然后使用 Ajax 传递给.php。 我听说过 json,它很有用,或者没有它我可以工作吗?
我正在链接我的代码:
var data = {
v_Post: document.getElementById("v_Post").value,
x: document.getElementById("x").value,
y: document.getElementById("y").value,
}
$.ajax({
type: "POST",
url: "http://localhost:80/mySite.it/scripts/script.php",
data: "data=" + data,
dataType: "html",
success: function(v) {
alert("Chiamata riuscita!!!");
},
error: function(){
alert("Chiamata fallita!!!");
}
});
});
});
我尝试在 php 中执行此操作,但它似乎不起作用:
$data = $_POST['data'];
echo '<script>console.log($data.v_Post); </script>';
echo $data.v_Post;
data
是 object,您将其转换为字符串( "[object Object]"
),因此实际数据在发送到 PHP 之前会丢失。
只需将 jQuery 传递给 object 本身,而不将其转换为字符串:
data: data,
然后 jQuery 将使用标准格式 Url 编码, PHP 将自动解码并用于填充$_POST
。
<?php
header("Content-Type: text/plain");
echo $_POST['v_Post'];
?>
然后它将在 JS 中可用:
success: function(response_data) {
alert(response_data);
},
如果您检查,则"data=" + data
计算结果为data=[object Object]
,因为对象在连接时被强制转换为字符串。 所以这不是我们想要的。
事实上,JSON 可以提供帮助,因为它 forms 是复杂数据的一个漂亮、统一的接口。 此外,您不想自己指定参数编码( data=...
作为字符串),因为 jQuery 可以为您完成,如果您只传递包含参数的 object 。 我还冒昧地将参数重命名为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'];
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.