2009-07-29 73 views
6

我有一個現有的jQuery插件,這使得大量的AJAX調用(主要是JSON)。我想知道允許它進行跨站點調用的最快速度是什麼,即$ .get和$ .post URL不會來自同一個域。使用jQuery跨站點AJAX

我聽說過JSONP,但想知道是否有人可以給我一個具體的例子來了解整個過程。如果可能的話,我想盡可能少地改動我的腳本。我應該使用一個proxy.php的種類?

謝謝你的時間。

回答

13

JSONP將允許您進行跨站點調用。 See jQuery docs on that matter.

這個概念很簡單:jQuery不會執行正常的Ajax調用,而是會爲您的<head>附加<script>標記。爲了達到這個目的,你的JSON數據需要被包裝在一個 函數調用中。

你的服務器需要以這樣的方式(PHP示例)發送信息:

$json = json_encode($data); 
echo $_GET['jsonp_callback'] . '(' . $json . ');'; 

然後,您可以使用jQuery來獲取信息:

$.ajax({ 
    dataType: 'jsonp', 
    jsonp: 'jsonp_callback', 
    url: 'http://myotherserver.com/getdata', 
    success: function() { 
    // do stuff 
    }, 
}); 

的更多信息,請訪問:What is JSONP?

+0

不錯!我會繼續測試這個。除了我認爲回聲統計應該打印$ json變量,而不是$數據。那是對的嗎 ? – 2011-10-25 18:07:17

+1

@PHP_Jedi:那會是正確的。我剛剛糾正了這個錯字(令人尷尬的是,在那裏已經有2年了)。 – 2011-10-25 20:25:03