我对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单页/多页应用程序正确运行的修复。