我正在尝试设置一个简单的AJAX调用,通过JSON将其数据发送到我的PHP脚本,然后返回数据。
但我没有运气。
以下是我的发送代码:
$.ajax({
url: ROOT+'Address/fetchAddress',
type: 'POST',
async: false,
dataType: 'json',
data: {
json: {
"Id":"0",
"Name":"Jim"
}
},
error: function(a, b)
{
alert(b)
},
success: function(data)
{
data = $.parseJSON(data);
alert(data)
}
})
了Serverside:
public function fetchAddress()
{
$JSON = $_POST['json'];
echo json_decode($JSON);
}
但我在警报框中收到“parseerror”,如果我检查了响应,我得到了:
Warning: json_decode() expects parameter 1 to be string, array given in ...public_html\controllers\Address.php on line 20
答案 0 :(得分:3)
这里存在概念上的错误。
当您说dataType: 'json'
时,表示返回的数据是JSON格式。
您仍然在POST数组中发送数据
public function fetchAddress(){
echo $_POST['json'];
}
获取数据
要在另一侧拿起一个预先传递的对象(因为数据以JSON形式返回)
所以
success: function(data)
{
alert(data.id+"NAME"+data.name);
}
(哦,你的数据不是一个字符串(这是一篇文章所期望的),而JSON是如此简洁,直到很好的字符串
json: '{"Id":"0","Name":"Jim"}'
答案 1 :(得分:1)
PHP收到的数据不需要解码,因为它已经是一个数组。只需将您的功能更改为此,就可以了。
public function fetchAddress()
{
echo json_encode($_POST['json']);
}
另外,既然你说jQuery你的响应是json,那么就不需要为你的获取数据调用$ .parseJSON()
答案 2 :(得分:1)
ajax
调用将数据作为数组发送,并期望返回的数据为JSON,因此PHP函数应该看起来像
public function fetchAddress()
{
$data = $_POST['json'];
echo json_encode($data);
}
并且客户端不需要解码返回的数据,因为它指定了dataType: 'json'
然后这已经由ajax
函数
$.ajax({
url: ROOT+'Address/fetchAddress',
type: 'POST',
async: false,
dataType: 'json',
...
success: function(data)
{
alert(data)
}
});