Php 如何使用AJAX和JSON发送和接收
我试图设置一个简单的AJAX调用,通过JSON将数据发送到PHP脚本,然后返回数据 但是我没有运气 这是我的发送代码:Php 如何使用AJAX和JSON发送和接收,php,javascript,jquery,ajax,json,Php,Javascript,Jquery,Ajax,Json,我试图设置一个简单的AJAX调用,通过JSON将数据发送到PHP脚本,然后返回数据 但是我没有运气 这是我的发送代码: $.ajax({ url: ROOT+'Address/fetchAddress', type: 'POST', async: false, dataType: 'json', data: { json: { "Id":"0", "Name":"Jim"
$.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)
}
})
服务器端:
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
PHP接收的数据不需要解码,因为它已经是一个数组。只要把你的函数改成这个,你就会没事了
public function fetchAddress()
{
echo json_encode($_POST['json']);
}
另外,因为您已经说过jQuery的响应是json,所以不需要调用$.parseJSON()来获取数据,PHP接收的数据不需要解码,因为它已经是一个数组了。只要把你的函数改成这个,你就会没事了
public function fetchAddress()
{
echo json_encode($_POST['json']);
}
另外,因为您已经说过jQuery的响应是json,所以没有必要调用$.parseJSON()来获取数据这里有一个概念上的错误 当您说
dataType:'json'
时,意味着返回的数据是json格式的
您仍在发送POST数组中的数据
public function fetchAddress(){
echo $_POST['json'];
}
获取数据
要在另一端拾取,您有一个预传递的对象(因为数据以JSON的形式返回)
所以
(哦,你的数据不是一个字符串(这是一篇文章所期望的),JSON是如此的干净,它变成了一个漂亮的字符串
json: '{"Id":"0","Name":"Jim"}'
这里有一个概念上的错误 当您说
dataType:'json'
时,意味着返回的数据是json格式的
您仍在发送POST数组中的数据
public function fetchAddress(){
echo $_POST['json'];
}
获取数据
要在另一端拾取,您有一个预传递的对象(因为数据以JSON的形式返回)
所以
(哦,你的数据不是一个字符串(这是一篇文章所期望的),JSON是如此的干净,它变成了一个漂亮的字符串
json: '{"Id":"0","Name":"Jim"}'
该调用将数据作为数组发送,并期望返回的数据作为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)
}
});
该调用将数据作为数组发送,并期望返回的数据作为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)
}
});
您有两个问题,都与数据类型有关。您的服务器端代码期望
json
POST参数为字符串,而不是。您的jQuery AJAX调用期望服务器的响应为有效的json,而不是。您有两个问题,都与数据类型有关。您的服务器端代码期望json
POST参数是字符串,而不是。jQuery AJAX调用期望服务器的响应是有效的JSON,而不是。Haste是一个糟糕的顾问…修复了:)Haste是一个糟糕的顾问…修复了:)谢谢,将其设置为字符串排序。我现在明白了!谢谢,将其设置为字符串排序。我现在明白了!