2013-06-05 60 views
0

有人可以幫我嗎?我有一個html文件,通過ajax調用一個php腳本,並顯示一個隨機數字,該腳本生成。當兩個文件都在同一個域中時,它工作得很好,但如果這兩個文件位於不同的域,這就是我所需要的,什麼都不會發生。有人可以幫我解決這個問題。如何使用Ajax跨域自動刷新div?

HTML文件中的代碼是:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> 
<script type="text/javascript">// <![CDATA[ 
$(document).ready(function() { 
$.ajaxSetup({ cache: false }); // This part addresses an IE bug. without it, IE will only load the first number and will never refresh 
setInterval(function() { 
$('#divToRefresh').load('http://www.OTHERDOMAIN.com/random.php'); 
}, 5000); // the "5000" here refers to the time to refresh the div. it is in milliseconds. 
}); 
// ]]></script> 
</head> 
<body> 
<div id="divToRefresh">Loading users...</div> 
</body> 
</html> 

如果線路

$('#divToRefresh').load('http://www.OTHERDOMAIN.com/random.php'); 

被改變爲:

$('#divToRefresh').load('random.php'); 

,並放置在同一文件夾中的HTML文件一切都很好。

的PHP文件中的代碼是:

<?php 
$random1 = sprintf("%02f", rand(0,9212)); 
echo $random1; 
?> 

將修改後的代碼,將允許跨域Ajax調用是什麼樣子?我正在閱讀有關json請求包裝器的文檔,但我沒有得到它要去的地方。任何幫助將非常感激。

回答

0

您無法使用AJAX跨域它不可能,你有以下幾種選擇,但:

1.do阿賈克斯將自己的網頁,使該頁面捲曲通話..

2.do $ .getJSON('ur',變量,函數(數據){})。

還有一些其他的解決方案,但那些2基本上都是您的最佳選擇

這裏的getJSON是如何工作的:

在您的服務器,你應該有一個頁面,準備收到$ _GET排序就像一個API或正常的ajax調用會使用$ _POST。

應該是這個樣子:

<?php 
if(!empty($_GET['jsoncallback']) && !empty($_GET['variable'])){ 

    /* do whatever you like with the variable you get as get 
    * 
    * 
    * 
    **/ 

    // echo the name of the callback function + the variables you want to receive back in JS 
    echo $_GET['jsoncallback'].'('.json_encode($jason_echo).')'; 
} 
?> 

您的JS或頁面你要做通話距離應該是這個樣子:用我的代碼爲出發

$.getJSON("SomePage/PagethatTakesTheGet.php?jsoncallback=?", {variable:15}, function(response){ 
    // do whatever you want with response. 
}); 
+0

你能提供一個例子點使用jetJSON。我會很感激。 – user2453942

+0

好吧,使用getjson,你需要在你的「服務器」上創建一個頁面,或者你需要訪問的任何跨域的地址,接受來電,並重新啓動一個函數..稍後會給你一個例子。 –

+0

好了解決了我對你的答案..不要忘記,回調必須是從PHP返回的變量的包裝。 –