正确设置通过jQuery/jQueryMobile中的AJAX调用检索的JSON数据中的变量
我有一个单文件、多页面的jQueyMobile应用程序,它向一个服务发出多个数据请求。数据以JSON格式返回。一些请求发生在应用程序的首页上,但其他请求在用户通过应用程序时动态发生 在几个页面中,我使用一个main函数调用data来检索数据,然后使用success和error函数来处理数据的接收与否。e、 g正确设置通过jQuery/jQueryMobile中的AJAX调用检索的JSON数据中的变量,jquery,ajax,json,jquery-mobile,Jquery,Ajax,Json,Jquery Mobile,我有一个单文件、多页面的jQueyMobile应用程序,它向一个服务发出多个数据请求。数据以JSON格式返回。一些请求发生在应用程序的首页上,但其他请求在用户通过应用程序时动态发生 在几个页面中,我使用一个main函数调用data来检索数据,然后使用success和error函数来处理数据的接收与否。e、 g function getStuff(thisKey) { $.ajax({ type: "POST", url: dataURL,
function getStuff(thisKey) {
$.ajax({
type: "POST",
url: dataURL,
cache: false,
data: {docid:thisKey},
success: getStuffSuccess,
error: getStuffError,
async: true,
beforeSend: showSpinner,
complete: hideSpinner
});
}
function getStuffSuccess(data, status){
// do stuff on success
}
function getStuffError(data, status){
// do stuff on success
}
这种方法在整个应用程序中都有效。然而,我似乎已经达到了上述方法的极限
function getDocumentData(thisKey) {
$.ajax({
type: "POST",
url: documentDataURL,
cache: false,
data: {docid:thisKey},
success: onDocumentDataSuccess,
error: onDocumentDataError,
async: true,
beforeSend: showSpinner,
complete: hideSpinner
});
}
function onDocumentDataSuccess(data, status){
// trim data
data = $.trim(data);
console.log(data);
// parse data
var resultData = JSON.parse(data);
console.log(resultData);
// set var data
var document_id = resultData.ID;
console.log(document_id);
}
function onDocumentDataError(data, status){
// blah
}
前两个console.log中都有有效数据。当我设置document_id时,它在控制台中返回为未定义
正如我前面所说的,尽管其他调用以同样的方式正常工作,但这种情况仍在发生
我在这里阅读了其他文章,并尝试了各种方法,在控制台中返回的数据之间存在计时问题的情况下,在true和false之间切换调用的async属性。另外,我已经完成了代码的其余部分,以确保我没有共享任何变量名-无论我尝试什么,我都无法使其工作
我在jQueryMobile应用程序中可以发出的请求数量是否达到了某种限制?这是提出这些要求的正确方式吗
感谢阅读-非常感谢您的任何建议
干杯
多姆
console.log返回以下内容:
在HTTP POST之后
XHR finished loading: POST "http://localhost/businessguardnet/app/index.cfm? method=document". jquery-1.9.1.min.js:5
send jquery-1.9.1.min.js:5
b.extend.ajax jquery-1.9.1.min.js:5
getDocData business-shield.js:305
createDocumentPageView business-shield.js:365
(anonymous function) VM230:1
在修剪数据之后
{"COLUMNS":["ID","DOCTITLE","DOCPRECIS","DOCFILENAME","DOCFILESIZE","DATEADDED"],"DATA":[[156,"Electricity - Kitchen","<html \/>","electricity_kitchen.doc",108544,"July, 16 2010 13:37:22"]]} business-shield.js:323
我认为这是由于服务返回数据的方式造成的。我发现如果我做了以下事情
data = $.trim(data);
var resultData = JSON.parse(data);
var document_data = resultData.DATA[0];
var document_id = document_data[0];
然后,document_id将返回一个值
感谢所有回应的人
干杯
Dom您是否检查了浏览器开发人员工具以查看HTTP响应中的内容?如果执行console.logresultData.ID,会发生什么情况?这也是未定义的吗?请检查它是否包含ID的结果数据?或者,如果您能分享您在console中看到的响应,那就更好了。谢谢大家的帮助-我已经更新了上面的console.log
undefined
data = $.trim(data);
var resultData = JSON.parse(data);
var document_data = resultData.DATA[0];
var document_id = document_data[0];