此服务返回有效的 JSON 数据
var gridValsstr;
$.ajax({
type: "GET",
url: "InsertMessage",
cache: false,
success: function(data)
{
// alert(data);
gridValsstr = data;
},
error: function(xhr, status, error) {
alert(xhr.responseText);
}
});
但是在这一行上:
var gridvals = JSON.parse(gridValsstr);
我收到错误:
语法错误:JSON.parse:意外字符
然后导致我的脚本的其余部分失败...
但是,如果我在该行放置一个断点并等待几秒钟,则该行会正确处理并将 JSON 加载到 UI 中。所以我认为它处理得太快或者变量还没有完全准备好还是什么?
很可能是因为 Ajax 调用是异步的,并且您的 JSON.parse 行在请求完成之前正在运行。
断点暂停执行的时间足以使 Ajax 请求完成。
点击了 Fabricio 的链接,在我尝试访问 var 之前,异步请求似乎没有完成。所以下面的代码解决了这个问题。请记住,还要将与调用结果交互的任何代码放入 .done(){.....} 中,它就可以工作了。
getFilters().done(function(r) {
if(r) {
gridValsstr = r;
gridvals = JSON.parse(gridValsstr);
}
else
{
//alert("r sucks");
}
})
.fail(function(x) {
alert("didn't work.")
});