如何使用PhoneGap中的jQuery将数据发布到远程服务器(跨域)?

时间:2012-07-09 07:55:22

标签: html5 cordova cross-domain

以下是我的代码:

function makeRequest() {
    //alert("inside makeRequest()");
    var settings = {
        type: "POST",
        url: URL + "?" + REQUEST,
        dataType: "json" ,
        error: function(XHR,textStatus,errorThrown) {
            console.log(XHR);
            console.log("textStatus: " + textStatus);
            console.log("errorThrown: " + errorThrown);
            //alert ("XHR="+XHR+"\ntextStatus="+textStatus+"\nerrorThrown=" + errorThrown);
        },
        success: function(data,textStatus) {
            $("body").append(data);
            console.log(data, textStatus);
        },
        headers: {
            "Access-Control-Allow-Origin" : "http://xxx.com",
            "Access-Control-Allow-Headers" : "X-Requested-With",
            "X_APNSAGENT_API_KEY" : app_key,
            "X_APNSAGENT_API_VERSION" : version,
            "X_APNSAGENT_API_TIMESTAMP" : timestamp,
            "X_APNSAGENT_API_SIGNATURE" : hash,
        }
    };
    $.ajax(settings);
}
makeRequest();

在phonegap wiki中,它说:

“跨域安全策略不会影响PhoneGap应用程序。由于webkit使用file://协议调用html文件,因此安全策略不适用。”

但我怎么称呼这个?

此外,我使用的是jquery-1.6.4.js

我试着找了几天的解决方案。请帮帮我救我......谢谢

2 个答案:

答案 0 :(得分:2)

这是我上个月遇到这样一个问题时使用的方法。

$.ajax({
            url:dataUrl,
            dataType: 'jsonp',
            success:function(response){
                //success call back
            },
            error:function(XMLHttpRequest, textStatus, errorThrown){
                                //error call back
                        }
            }
    });

如果您在此链接http://remysharp.com/2007/10/08/what-is-jsonp/上看到雷米夏普的帖子,则会更加明确。

希望它对你有所帮助。

答案 1 :(得分:1)

我自己解决这个问题。

最后。我发现jquery导致了这个问题。

在ajax请求之前。我添加代码:$ .support.cors = true;

最后一切都运作良好。

有关详细信息,您可以访问我的博客http://cashwordpress.sinaapp.com(但很抱歉,我只是发布中文文本)。