此服务返回有效的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);
我收到错误:
SyntaxError: JSON.parse: unexpected character
然后导致我脚本的其余部分失败......
但是,如果我在该行放置一个断点并等待几秒钟,该行正确处理并将JSON加载到UI中。所以我认为它处理得太快或者变量还没有完全准备好什么呢?
答案 0 :(得分:0)
很可能是因为Ajax调用是异步的,并且在请求完成之前您的JSON.parse行正在运行。
断点暂停执行的时间足以让Ajax请求完成。
答案 1 :(得分:0)
跟随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.")
});