jQuery .ajax调用从不调用方法
在这篇SOpost中,我学会了如何从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: "" }; 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("").get_masterTableView(); console.log(data); mtv.set_dataSource(data.d.Data); mtv.dataBind(); } }); }
谁知道什么是错的?
包含error handling函数作为传递给$ .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对象。