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
}
可以肯定的是,我目前还不知道发生了什么。如何提取所需的值?
答案 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"
});