Phonegap jQuery ajax请求不起作用

Phonegap jQuery ajax请求不起作用,jquery,cordova,Jquery,Cordova,我想开发一个Phonegap应用程序,我正在使用jQuery Mobile。我正在PC上通过Firefox进行开发和测试,因此这里描述的问题与Phonegap无关-这是Firefox PC的问题: 以下代码不起作用,我需要一些帮助来为我指明正确的方向: var loadWeather = function() { // Request absetzen $.ajax( { // the URL for the request url : '

我想开发一个Phonegap应用程序,我正在使用jQuery Mobile。我正在PC上通过Firefox进行开发和测试,因此这里描述的问题与Phonegap无关-这是Firefox PC的问题:

以下代码不起作用,我需要一些帮助来为我指明正确的方向:

var loadWeather = function()
{
    // Request absetzen
    $.ajax(
    {
        // the URL for the request
        url : 'http://www.google.com/ig/api',

        // the data to send (will be converted to a query string)
        data : {
            weather : 'Vienna'
        },

        // whether this is a POST or GET request
        type : 'GET',

        // the type of data we expect back
        dataType : 'xml',

        // code to run if the request succeeds; the response is passed to the function
        success : function(xml)
        {
            parseXML(xml);
        },

        // code to run if the request fails;
        // the raw request and status codes are passed to the function
        error : function(xhr, status)
        {
            alert('Error retreiving weather!');
        }
    });
}
状态为“error”,xhr.readyState=0,xhr.status=0,因此我根本没有从jQuery中获得任何原因信息。执行请求时,应答头(来自Firebug)为:


200美元,好的。那么,我为什么要在错误案例中跳跃呢?isRejected()表示为true。这是什么意思?

好的,这里有很多事情。首先,Firefox不允许您使用AJAX进行跨域请求,所以当您从桌面浏览器尝试时,会出现错误情况

如果您在设备上进行测试,我会怀疑jQuery会给您一个成功的结果。您可以看到,在移动设备上从文件://协议运行代码时,同源策略不适用。事实上,在我用PhoneGap开发的示例应用程序中,我对Google API进行了AJAX查询

但是,根据您使用的jQuery版本,可能会出现错误。当您从文件://协议执行AJAX请求时,返回的xhr.status通常为“0”。这实际上没有问题,应该与“200”一样对待,但我认为较旧版本的jQuery存在0状态问题

我写了一篇关于从PhoneGap应用程序执行XHR的快速博客文章,您可以阅读:


它将jQuery完全排除在等式之外。如果这不起作用,那么什么也不会起作用。

相反,在XML上尝试JSONPYou将无法测试它(使用实际请求,没有一些代理脚本),因为跨域源限制。这个API似乎不支持JSONP。但它将在设备上的Phonegap内部工作,因为没有跨域限制。@dfsg:如果您的评论是答案,我会选择它。非常感谢。但是当我做Firefox测试时,我也使用文件://协议,所以我希望Firefox允许我执行请求。我在Firebug网络页面上也看到了这个请求,但你是对的。它在设备上的Phongap上工作,这才是最重要的。因此,我无法在Firefox或Chrome上进行测试/调试,但必须在设备上运行它,而不可能进行调试。纠正在AJAX方面,移动浏览器的工作方式与桌面浏览器不同。您可以在此处了解如何在Firefox中实现跨域ajax:。可以使用debug.phonegap.com在设备或模拟器上进行调试。
Accept: application/xml, text/xml, */*; q=0.01
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Accept-Encoding: gzip, deflate
Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3
Connection: keep-alive
Host: www.google.com
Origin: null
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:9.0.1) Gecko/20100101 Firefox/9.0.1