Ajax调用最初不起作用,但后来成功调用

时间:2016-07-21 03:49:56

标签: javascript jquery ajax cordova

我正在使用Cordova混合移动应用程序。我正在调用API来将数据加载到我的变量中并进行处理。以下是问题所在。

首先,我使用ajax调用API。在ajax调用之后,我检查jsonString是否为空,如果是,我重新加载页面以再次运行ajax调用。

$.ajax({
            url: GetConfigUrl // working URL,
            type: 'POST',
            data: {
                token: '123456'
            },
            cache: false,
            datatype: 'json',
            contenttype: "application/json",               
            success: function (data, response, xhr) {
              debugger
              jsonString = data.Value;
            },
            error: function (data) {
              // do nothing
            )
       });

        if (jsonString == '') {
           // Display popup to ask user the reload the page
        }

        return true;

我在成功调用函数中有一个调试器,但它没有命中并直接检查jsonString是否为空,这是空的,因为它没有调用ajax加载数据并继续显示弹出窗口要求用户重新加载页面。

点击页面重新加载后,成功调用中的调试器被命中并能够检索该值。因此,jsonString不为空并且能够继续。

我检查控制台中的“网络”选项卡,它显示以下结果: enter image description here

似乎是第一次通话,但始终保持待定状态。第二个调用是成功调用并返回正确的值。所以传递了jsonString检查。

此问题始终发生在第一个ajax调用未成功且处于挂起状态但所有后续调用都成功的情况下。

那么这里可能出现什么问题?如何确保第一次ajax调用成功并始终返回数据?

1 个答案:

答案 0 :(得分:2)

Ajax以异步方式执行,将您的逻辑放在成功函数中,以便在ajax调用完成时执行

$.ajax({
            url: GetConfigUrl // working URL,
            type: 'POST',
            data: {
                token: '123456'
            },
            cache: false,
            datatype: 'json',
            contenttype: "application/json",               
            success: function (data, response, xhr) {
              debugger
              jsonString = data.Value;
               if (jsonString == '') {
                 // Display popup to ask user the reload the page
               }

            },
            error: function (data) {
              // do nothing
            )
       });


        return true;