使用cordova调用了错误的ajax回调

时间:2013-06-20 06:57:18

标签: ajax json cordova

在我的jqm应用程序中,我使用jQuery $ .ajax发送和接收json数据进行POST。在浏览器和iPhone上一切都很好;在Android上,我注意到当这个服务器响应是这样的时候:

{ "code" : 500,
  "errorMsg" : "bla bla bla",
  "errors" : null,
  "status" : "INTERNAL_SERVER_ERROR",
  "success" : false
}

ajax调用“错误”回调而不是“成功”。这只发生在android上,只有当我包含corova-2.0.0时才会发生。关于该项目的js。有什么帮助吗?

我正在使用带有jqm 1.3.1和jQuery 1.9.1的cordova-2.0.0

这是我的代码:

 var ajax = $.ajax({
   type: "post",
   url: url,
   dataType: 'json',
   contentType: 'application/json; charset=utf-8',
   data: data,
   timeout: 30000
});

var success = function (d) {
   if(d.success==true && obj.success)
       obj.success(d.data);
   else
   {
       var msg = parseErrors(d);
       console.log(msg);
       //open page passing results
       obj.msgBus.fire("RequestResult", {
           callback: function(){  obj.msgBus.fire("Welcome");},
           success: false,
           text: msg
       });
   }
};

var error = function (xhr, status, e) {
   console.log('error ajax url:[' + url + ']  status:[' + status + ']  error:[' + e + ']');
   if (obj.error) {
       if ((typeof e == 'string'))
           obj.error({
               statusText: e,
               code: xhr.statusCode,
               text: xhr.responseText
           });
       else {
           e = $.extend(e, {
               statusText: status
           });
           obj.error(e);
       }
   }
};
var complete = function () {
   if (obj.complete) {
       obj.complete();
   }
};

var parseErrors = function(d){
   console.log( d);
    if(d.errors==null){
        return d.errorMsg;
   }
   else
   {
       var res="";
       for (var i=0;i< d.errors.length;i++){
            res+= "{0}: {1} <br/>".format( d.errors[i].field, d.errors[i].errorMsg);
       }
       return res;
   }
};

ajax.success(success).error(error).complete(complete);

其中data是这样的对象:

{ 
   "date" : 1371679200000,
  "idBeach" : "1",
  "idStuff" : 3,
  "idUser" : "8",
  "numStuff" : 1
}

1 个答案:

答案 0 :(得分:0)

试试这个,它对我有用

$.ajax({
    async: false,
    type: "POST",
    url: "Your_URL",
    dataType: "json",
    success: function (data, textStatus, jqXHR) {


        $.each(data, function (i, object) {
            alert(obj.Data);
        });

    },
    error: function () {
        alert("There was an error loading the feed");
    }
});