JSON.parse Jquery timing issue/conflict



此服务返回有效的 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.")
});

最新更新