首先是ajax呼叫状态0"错误"但第二个ajax呼叫状态4" 200"

时间:2015-02-05 11:32:50

标签: android jquery ajax cordova

我遇到了一个严重的问题。首先:

通过Android设备上的cordova应用程序将Ajax调用发送到受基本身份验证和ssl保护的Windows Server(IIS,PHP)。

由于我们上次(几天前)更新了GlobalSign nv-sa证书,ajax调用在30秒后第一次尝试时获得状态0,但在第二次尝试时获得状态4和“200”(在30之后第一次点击)秒状态0 - >立即点击第二时间状态4)。旧证书的唯一区别是:新证书不再是sha1而是sha256指纹...

从第二次点击开始,每次点击都会产生4“200”而没有任何问题,但第一次总是得到0“错误”。

代码:

$.ajax({
          type: "POST",
          url: url,
          async: asyncVar, // for Android: false - for iOS: true

          username: db.getItem("user"),
          password: db.getItem("pass"),
          xhrFields: { withCredentials: true },

          data: { forename: db.getItem("forename"), surname: db.getItem("surname"), uuid: db.getItem("uuid"), mail: db.getItem("mail"), phone: db.getItem("phone") },
          dataType: "json",
          success: function(data, status, object){
            var body = object.responseText;
            var obj = jQuery.parseJSON(body);

            alert('test1: '+status + ' | ' + object.status + ' | ' + object.readyState + ' | ' + object.statusText + ' | ' + data);

            //alert("test: "+obj.auth);

            if(obj.auth == '1')
            {
                db.setItem("auth","1");
            }
            else
            {
                db.setItem("auth","0");
            }
        },
        error: function(object, status, errorThrown){
            db.setItem("auth","0");
            alert('test2: '+status + ' | ' + object.status + ' | ' + object.readyState + ' | ' + object.statusText + ' | ' + errorThrown);
        }
}).always(function(object, status, errorThrown){
        if(db.getItem("auth") == "1")
        {
            $.mobile.pageContainer.pagecontainer("change","#pageLocations");
        }
        else
        {
            db.setItem("auth","0");
        }
        alert('test3: '+status + ' | ' + object.status + ' | ' + object.readyState + ' | ' + object.statusText + ' | ' + errorThrown);
});

代码的确切结果:

首先点击:

test2: error | 0 | 0 | error |
test3: error | 0 | 0 | error |

第二,第三等......点击:

test1: success | 200 | 4 | OK | [object Object]
test3: success | undefined | undefined | undefined | [object Object]

你知道这可能是什么原因,或者我做错了什么?

日Thnx。提前帮助你。

1 个答案:

答案 0 :(得分:0)

好的,我现在就开始工作了。解决方案很简单:

缺少GlobalSign的中间证书,所以我们将它安装在服务器上,重新启动它并且工作正常......

源代码没有问题!只需要安装证书和中间证书。