0

我正在尝试设置一个简单的 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)
      }
    })

服务器端:

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
4

3 回答 3

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"}'
于 2013-03-14T11:52:17.213 回答
1

您的 PHP 接收到的数据不需要解码,因为它已经是一个数组。只需将您的功能更改为此,您应该没问题

public function fetchAddress()
{
  echo json_encode($_POST['json']);
}

此外,由于您已经说过 jQuery,您的响应是 json,因此无需调用 $.parseJSON() 来获取您获取的数据

于 2013-03-14T11:52:16.920 回答
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)
      }
    });
于 2013-03-14T12:04:19.680 回答