2011-11-09 66 views
1

我有一個網站,調用AJAX。它在我的辦公室工作(在許多人的計算機上,在不同的系統和瀏覽器上,不僅僅是我的辦公室),它是在一臺外部計算機上工作的(我的一位朋友,他住在辦公室大約10分鐘) 。但是,AJAX在其他所有外部計算機上都失敗了。如果我在家裏嘗試,或者我的另一個朋友在家裏嘗試,它不起作用(我們住在離辦公室很遠的地方)。這是一個非常簡單的使用jQuery的AJAX調用。AJAX基於地理位置工作?

$(destination).load(url); 

我使用Firebug控制檯檢查了一下,發現這個

AJAX調用被列爲

GET (url) 200 OK 

時它的工作原理,當它不工作,只是當它不」 t工作,它是紅色的,並且在OK和152ms之間有一個'X'圖標(或不管多長時間)。

PARAMS標籤 - 是同它是否有效與否

頭選項卡 - 當它的工作原理,在「請求頭」部分顯示:

X-Requested-With XMLHttpRequest 
Cookie PHPSESSID=******* 

但是當它不工作,這些行不存在,而是有一個'Origin'(只有主站點URL)的行。

響應/ HTML選項卡 - 當它不起作用時爲空。正如我所說的,我已經測試過瀏覽器,電腦,Mac,Pc等,它們都可以在辦公室使用,但不是在任何地方。任何幫助是極大的讚賞。

UPDATE

我創建了一個測試頁面分離出的代碼。測試頁面簡要工作,然後停止工作(困惑我)。所以我現在認爲我的代碼有錯誤,但是當錯誤發生時,瀏覽器忽略了錯誤(原始文件在辦公室仍然有效,而測試不起作用)。

測試頁應該有'工作!'點擊「測試」鏈接時彈出。這裏是代碼:

<?php 
$call = $_GET['call']; 
echo $call; 
if($call == 'yes') //check for call 
{ 
    echo 'Worked!'; 
    exit(); 
} 
?> 
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.js" type="text/javascript"></script> 
<script language="javascript" type="text/javascript"> 
function callAjax(call){ 
var dest = "#result"; 
var url = "http://www.test/page/url.php"; 
var query = "?call="+call; //turn call into a query string 
url = url+query; //Add querystring to url 
$(dest).load(url); //make the call 
} 
</script> 

<!DOCTYPE html><html><head><title>Test</title></head> 
<body> 
<a href="javascript:callAjax('yes')">test</a> 
<div id="result"></div> 
</body> 
</html> 
+0

什麼是您要加載的URL? (如果它不是祕密) – florian

+0

@florian我正在加載的頁面可以正常工作,即使是在家中(如果我直接去他們而不是進行AJAX調用,他們也會工作)。這是一些數據庫信息的簡單列表。我確信這個問題與請求頭中沒有XMLHttpRequest有關,但我不知道爲什麼會出現這種情況。 – lcHatter

+0

'url'看起來像'http:// www.example.com/page','/ page'還是'page'? – icktoofay

回答

0

問題是使用url的絕對路徑。這個代碼對於'www'是否在地址欄中很重要。因此,如果您在地址欄中使用'www'轉到頁面,但它不在代碼網址中(反之亦然),它將無法工作。

它在某些人的計算機上沒有工作的原因是因爲當他們訪問該頁面時,這些人沒有放入'www',他們的地址欄與代碼url不匹配。

感謝icktoofay讓我在正確的道路上找出答案。

0

這裏是你可以做的,以嘗試針對「錯誤」。

  • (如果可能)測試除您的項目之外的Ajax請求。在您的項目中創建一個獨立的(剛剛下載的jquery.js文件)頁面,用於加載預期內容並查看它是否有效。在這種情況下,「bug」與你的項目本身有關。

  • 我發現當URL與我從中加載URL的主機不匹配時,我的頭中沒有XmlHttpRequest。 (例如試圖加載google.com頁面)。檢查你是否沒有進行跨域請求。(我不這麼認爲,因爲它工作在你的朋友的)

[極端的一個]

  • 我不知道它是(公開與否)什麼樣的項目,但我已經在數據庫訪問被限制到特定IP地址的項目上工作過。某個地區的IP地址是相似的,所以也許它對你的朋友很好,因爲他住在你的辦公室附近,而不是在你家,因爲IP地址太不同了。

我不確定上述任何提議可以解決您的問題,但也許可以提供幫助。

+0

我放了一個測試頁與我的代碼的一個愚蠢的版本。感謝您的建議。我會檢查IP地址的東西了。 – lcHatter