jQuery AJAX有两个域

时间:2010-05-25 19:11:10

标签: jquery ajax

确定情况如下:我有一个外部托管的CMS,可以满足99%的需求。然而,在更高级的东西我注入我自己的CSS + JS并做魔术。我遇到的问题是从jQuery.ajax()调用加载一个简单的HTML页面。它似乎起作用,没有任何警告或错误被抛出;但是在我的成功处理程序(IS运行)中,响应是空白的!

整个上午我一直在摸不着想要解决这个问题,我唯一能想到的是这与跨域问题有关(即使看起来有效)。

注入JavaScript:

$(document).ready(function() {
    doui();
});
function doui() {
    $.ajax({
        url: 'http://apps.mydomain.com/css/feecalc/ui.htm',
        cache: false,
        success: ajax_createUI,
        charset: "utf-8",
        error: function(e) {
            alert(e);
        }
    });
}
function ajax_createUI(data, textStatus) {
    alert(data);
    $("#ajax-content").html(data);
}

我的ajax_createUI()成功处理程序被调用,textStatus是“成功”;但是数据是空的。

此JS文件驻留在@ http://apps.mydomain.com/css/js/feecalc.js,但CMS网站(将JS注入其中)驻留在@ http://www.mydomain.com/

我只是愚蠢还是它看起来应该有效但却不是?

3 个答案:

答案 0 :(得分:5)

这不是一个错误,它是现代浏览器的一个功能:Same Origin Policy有三种方法可以解决这个问题。看看你已经攻击过问题的方式,我会调查jsonp

答案 1 :(得分:1)

我认为加载页面最合适的方法是.load()

其次,正如Nick所说,您遇到了跨域问题。一种选择是针对您网站上的页面执行load(),该页面充当请求您所需页面的代理。

例如: 您请求.load(/myPage.aspx)和myPage.aspx请求http://apps.natronacounty-wy.gov/css/feecalc/ui.htm并将其返回给客户端

答案 2 :(得分:0)

您可以通过YQL(Yahoo!查询语言)查询您的请求,这将生成JSONP文件(它甚至支持XMLP - >带回调函数的XML)。这可能会降低您的性能,但雅虎提供快速服务器。