正确设置通过jQuery/jQueryMobile中的AJAX调用检索的JSON数据中的变量

正确设置通过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,

我有一个单文件、多页面的jQueyMobile应用程序,它向一个服务发出多个数据请求。数据以JSON格式返回。一些请求发生在应用程序的首页上,但其他请求在用户通过应用程序时动态发生

在几个页面中,我使用一个main函数调用data来检索数据,然后使用success和error函数来处理数据的接收与否。e、 g

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];