2011-01-12 67 views
0

我目前正在写这个jquery,并出于某种原因(我不知道为什么)它在正常的域名上工作,但在停放的域名上没有。阿贾克斯在停放的域名

正常的域 - http://www.thefinishedbox.com 绑定域名 - http://www.tfbox.com

如果向下滚动到殖民地新闻和打点击我连结你会看到它会检索在正常的域通过jQuery ajax的数据,但在停放的域名不会。

这里是jQuery代码我到目前为止(它非常标准):

$(function() { 

$.ajaxSetup({ 
    cache: false 
}); 
var ajax_load = "Load me plz"; 

// load() functions 
var loadUrl = "http://thefinishedbox.com/wp-content/themes/tfbox-beta/test.php"; 

$('.overlay').css({ 
    opacity: '0' 
}); 
$('.toggle').click(function() { 
    $('.overlay').css({ 
     display: 'block' 
    }).animate({ 
     opacity: '1' 
    }, 300); 

    $(".overlay .content").html(ajax_load).load(loadUrl); 

    return false; 
}); 
$('.close').click(function() { 
    $('.overlay').animate({ 
     opacity: '0' 
    }, 300); 
    $('.overlay').queue(function() { 
     $(this).css({ 
      display: 'none' 
     }); 
     $(this).dequeue(); 
    }); 
    return false; 
}); 

我是一个完整的noob当涉及到阿贾克斯,因此任何帮助,将massivly赞赏。

回答

2

因为您不能在另一个域上执行Ajax请求,除非您已相应地设置权限。它被称为“跨域Ajax”。

如果你是绝对需要使它工作,你可以修改你的代码位:

var loadUrl = "http://"+window.location.hostname+"/wp-content/themes/tfbox-beta/test.php"; 

或者使用一种解决方法(不推荐):http://www.usejquery.com/posts/9/the-jquery-cross-domain-ajax-guide

+0

是啊,我刚才读上去就可以了,当然我应该这样做张贴这个问题,顺便之前,做你知道关于设置权限的一切吗? – Daryl 2011-01-12 02:36:32

+1

+1正确的答案,但只是fyi,它应该是“...域,除非你有相应的权限设置。” – JakeParis 2011-01-12 02:39:02

+0

这是不正确的,它在主机名+端口而不是域上运行。另外,当他在谈论一个“停放的域名”时,我猜想这个内容在他运行脚本的网站上是不可用的,所以window.location.hostname将不起作用 - 而且也是不必要的,因为你可以使用一个相对的URL。 – Jim 2011-01-12 02:43:36

1

Ajax请求通常从装载的东西被禁止从其他主机名出于安全原因。如果您可以简单地从其他网站加载内容,则可以加载人员的银行详细信息等。

解决此限制的常见方法是使用JSON-P,但需要其他网站的支持。

1

你可以在你的php页面上写这个以将域名存储在一个js变量中。这样你就可以在任何一个域上使用相同的代码。

<script type="text/javascript">var domain = '<?php echo $_SERVER['HTTP_HOST']; ?>';</script> 
<script type="text/javascript" src="yourJavascriptFile.js"></script> 

然后使用该变量在你的js文件,像这样:

// load() functions 
var loadUrl = domain + "/wp-content/themes/tfbox-beta/test.php";