Phonegap for Windows Phone jQuery ajax回调未执行



我对Windows Phone和jQuery的Phonegap有问题。

我有一个到远程服务器的Ajax请求,但即使服务器用200代码响应,成功回调也不会执行(我可以在服务器access_log中看到请求)。错误回调也没有执行。

代码

$.support.cors = true;
$.mobile.allowCrossDomainPages = true;
$.ajax({
    url: 'http://example.com',
    data: { foo: 'bar' },
    cache: false,
    dataType: 'json',
    success: function (data) { 
        console.log(data); 
    }
});

知道吗?

我也有同样的问题,但不是这个建议,新版本的phonegap也没有帮助。使用phonegap 1.4.0,我现在总是得到错误回调。

如果您使用的是jQuery Mobile,则需要将以下内容设置为true:

$.support.cors和$.mobile.allowCrossDomainPages

jQuery希望所有js代码都能在正常的浏览器环境中运行,在这种环境中不允许跨域请求。我想他们是专门为PhoneGap设计的。

检查jQuery Mobile Docs

这似乎是phone gap 1.3.0中本地XHR垫片实现的已知问题。您可以切换到以前的版本,或者在phonegap-1.30.js中从第3551行开始到文件的末尾对所有内容进行注释

//(function(win,doc){
//
//    doc.addEventListener("DOMContentLoaded",function()
//    { 
// ......
//      if(!docDomain || docDomain.length == 0)
//      {
//          //console.log("adding our own Local XHR shim ");
//          var aliasXHR = win.XMLHttpRequest;
//      
//          win.XMLHttpRequest = function(){};
//      
//          var UNSENT = 0;
// ......
//
//    
//})(window,document);

编辑PhoneGap 1.4.0rc1已提交

https://github.com/purplecabbage/callback-windows-phone

更改包括对本地文件的XHR修复,以及允许jQM单页/多页应用程序正确运行的修复。

最新更新