2010-01-02 102 views
1

我想加载<div class="test">一些内容来自另一个URL例如:http://someurl.com/default.aspxAJAX不适用于jQuery

我试过这段代码:

$(".test").load('http://someurl.com/default.aspx'); 

但它不工作。

随着它工作的本地文件,但不是以http:// ...

有人可以帮助我吗?

感谢

+0

是它加载的URL在Firebug净标签?任何错误?什么状态? 404? – 2010-01-02 17:16:35

+0

任何错误,只是空div – AlexC 2010-01-02 17:22:53

回答

8

看起来你已经撞到了same origin policy。您必须使用load()方法的相对路径,否则大多数浏览器将仅返回一个空的responseText

作为一种可能的解决方法,您可以设置一个非常简单的reverse proxy(如果您使用的是Apache,则使用mod_proxy)。这将允许您在AJAX请求中使用相对路径,而HTTP服务器将充当任何“远程”位置的代理。

mod_proxy中设置反向代理的基本配置指令是ProxyPass。如下您通常会使用它:

ProxyPass  /ajax/  http://someurl.com/ 

在这种情况下,浏览器会请求/ajax/default.aspx但实际上,服务器会通过充当代理http://someurl.com/default.aspx服务于这个。

如果您使用IIS,则可能需要使用Managed Fusion URL Rewriter and Reverse Proxy来设置反向代理。

0

你不能用AJAX做跨域。这是PHP load funcion小解决方案:

JS:

$(".test").load("myloadurl.php", {url: 'http://someurl.com/default.aspx'}); 

myloadurl.php

<?php 
header('Content-type: text/html'); 
print load($_GET['url']); 
0

如果你有控制权someurl.org你应该使用JSONP这是一个适当的方式做跨浏览器的AJAX请求。

例如,你有一个包含一些http://someurl.org/default.php这样的:

<?php 
echo $_GET['jsoncallback'] . '(' . $results_in_json_format . ')'; 

现在你可以让你的AJAX查询使用jQuery这样的:

$.getJSON("http://someurl.com/default.php?jsoncallback=?", function(data) { 
    $(".test").html(data); 
});