我目前正在编写这个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;
});
当谈到ajax时,我是一个完整的菜鸟,所以任何帮助都会得到大力赞赏。
答案 0 :(得分: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
答案 1 :(得分:1)
出于安全原因,通常禁止Ajax请求从其他主机名加载内容。如果您只是从其他网站加载内容,则可以加载人们的银行详细信息等。
解决此限制的常用方法是使用JSON-P,但这需要其他网站的支持。
答案 2 :(得分: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";