在这个SO post中,我学会了如何从AJAX调用中获取返回值:
function CallIsDataReady(input) {
$.ajax({
url: "http://www.blah.com/services/TestsService.svc/IsDataReady",
type: "GET",
contentType: "application/json; charset=utf-8",
data: input,
dataType: "json",
success: function (data) {
if (!data) {
setTimeout(function (inputInner) { CallIsDataReady(inputInner); }, 1000);
}
else {
//Continue as data is ready
callUpdateGrid(input);
}
}
});
}
$(document).ready(function () {
var input = { requestGUID: "<%=guid %>" };
CallIsDataReady(input);
});
此函数调用其Web服务,确实返回true。问题是在以下callUpdateGrid中,日志记录显示没有从$ .ajax调用调用该Web服务方法:
function callUpdateGrid(input) {
console.log(input);
$.ajax({
url: "http://www.blah.com/services/TestsService.svc/GetContactsDataAndCountbyGUID",
type: "GET",
contentType: "application/json; charset=utf-8",
data: input,
dataType: "json",
success: function (data) {
var mtv = $find("<%= RadGrid1.ClientID %>").get_masterTableView();
console.log(data);
mtv.set_dataSource(data.d.Data);
mtv.dataBind();
}
});
}
任何人都知道出了什么问题?
答案 0 :(得分:1)
总是总是将错误处理函数包含为传递给$ .ajax的选项之一。例如,在成功函数之后添加此代码:
,
error: function(jqXHR, textStatus, errThrown) {
console.log("AJAX call failed");
console.log(errThrown);
}
如果$ .ajax调用不成功,那将至少记录一些信息。
修改强>
根据你的评论,这个日志
SyntaxError: Invalid character
事实上,我现在看到你提供了一个普通的JavaScript对象作为传递给$ .ajax的data
选项,但指出它是dataType
字段中的JSON对象。您需要自己将输入对象实际转换为JSON,如下所示:
data: JSON.stringify(input),
dataType: 'json',
或者,您可以先将input
格式化为JSON对象,如下所示:
var input = { "requestGUID": "<%=guid %>" };
在这种情况下,字段名称requestGUID
周围的引号足以为您提供JSON对象。