使用.ajax(JQuery)跨域问题到我拥有的域 - 简单的PHP页面

Tod*_*nce 3 ajax jquery xmlhttprequest cordova

所以我知道这是一个常见的问题,看到很多人都在谈论它,但我觉得我的情况很独特,可能没有其他人那样参与.

我有一个主机网站,并试图用JQ和PhoneGap构建一个iPhone应用程序.

我希望人们能够从应用程序将他们的分数传递到我的主域,但是我感到害怕:"Access-Control-Allow-Origin不允许使用Origin null".当我试着打电话给这个时:

$.ajax({
        type: "POST",
        url: 'http://www.homesite.com/thephppage.php',
        data: {
            'guid': '12333-54',
            'score': 52,
            'initials': 'tod'
        },
        success: function (data) {
            try {

                }
                else {

                }
            }
            catch (err) {
                alert(err);
            }
        },
        error: function (xhr) {
            alert(xhr.responseText);
        }
    });
Run Code Online (Sandbox Code Playgroud)

既然这是在呼唤我所拥有的域名,那么我能做些什么来纠正这个问题吗?

谢谢.Ť

Ada*_*kis 5

您拥有这两个域的事实并未改变ajax请求不能跨域的事实.

既然这是在呼唤我所拥有的域名,那么我能做些什么来纠正这个问题吗?

看一下设置CORS,它应该允许你做出这些跨域请求.另外,根据jQuery文档,jQuery应该主要支持CORS请求

xhrFields(已添加1.5.1)Map要在本机XHR对象上设置的fieldName-fieldValue对的映射.例如,如果需要,您可以使用它将withCredentials设置为true以用于跨域请求.

$ .ajax({url:a_cross_domain_url,xhrFields:{withCredentials:true}}); 在jQuery 1.5中,withCredentials属性未传播到本机XHR,因此需要它的CORS请求将忽略此标志.因此,如果您需要使用它,我们建议使用jQuery 1.5.1+.


目前,由于Firefox中的一个错误,.getAllResponseHeaders()返回空字符串,尽管.getResponseHeader('Content-Type')返回非空字符串,因此不支持在Firefox中使用jQuery自动解码JSON CORS响应.