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对象。