2011-01-12 65 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";