jQuery.ajax()到json url返回一个字符串而不是一个json对象

时间:2011-10-28 01:14:20

标签: ajax json jquery

我遇到的问题是传递给我的complete()回调函数的数据对象不是json对象,而是[Object object]。我可以在data.responseText中看到我的json响应字符串。

这是我的jQuery .ajax请求:

$.ajax({
  url: 'api.php',
  dataType: 'json',
  data: {
    command: "GetBlacklist"
  },
  type: 'POST',
  error: function(jqXHR, textStatus, errorThrown)
  {
    messageDiv.append("Error: " + errorThrown + "<br />");
  },
  complete: function(json)
  {
    $('.blacklist textarea').text(json.message);
    messageDiv.append("Blacklist loaded.");
  }
}); 

以下是发送的回复:

{"message":"success","result":0}

它评估为有效的JSON,我从服务器发送正确的json内容类型头。难倒在这一个!

1 个答案:

答案 0 :(得分:3)

complete回调的签名为complete(jqXHR, textStatus)jqXHR为您提供[对象]。

相反,您应该使用success(data, textStatus, jqXHR)回调,如果请求成功,将会调用该回调,而这次data将为您提供正确的回复。

更多信息请查看the manual