如何从jQuery中的网络服务返回的JSON中提取值?

时间:2019-01-09 08:50:45

标签: jquery json ajax

This answer看起来很接近,但我认为此答案与我的问题之间存在根本差异,导致答案不足以满足我的需求。

从ajax帖子中,我得到一个返回的JSON值,如下所示:

{
   "token": "wegHOIoi32h4gt834ygli",
   "expires": "1496845449"
}

我需要将令牌值wegHOIoi32h4gt834ygli保存到localStorage。

这是我的代码:

$.ajax(settings).done(function (response) {
    console.log(response);
    $(".Results").html(response);
    $.each(response, function (index, element) {
        var token = element.value;
        console.log(token);
        localStorage.setItem("token", token);
    })
});

现在我收到此错误:

  

未捕获的TypeError:无法在{
中使用'in'运算符搜索'326'       “ token”:“ wegHOIoi32h4gt834ygli”,
      “到期时间”:1496845449
  }

可以肯定的是,我目前还不知道发生了什么。如何提取所需的值?

1 个答案:

答案 0 :(得分:2)

假设API响应是一个字符串,则需要使用JSON.parse(responseString)将其解析为一个对象。然后,这为您提供了一个普通的JavaScript对象,您可以操作该对象并从中提取值。

例如,假设答案是您提出的问题:

$.ajax(settings).done(function (response) {
    var parsedResponse = JSON.parse(response);
    var token = parsedResponse.token;
    console.log(token); // "wegHOIoi32h4gt834ygli"
});

或者,如果您的API使用Content-Type: application/json正确发送了它的响应,或者您告诉jQuery为您解析为JSON(请参见the documentation中的dataType: "json"),那么问题就出在来自$.each试图遍历您没有的值的数组的事实,因此您可以执行以下操作:

$.ajax(settingsIncudingDataType).done(function (response) {
    var token = response.token;
    console.log(token); // "wegHOIoi32h4gt834ygli"
});