我有一個現有的jQuery插件,這使得大量的AJAX調用(主要是JSON)。我想知道允許它進行跨站點調用的最快速度是什麼,即$ .get和$ .post URL不會來自同一個域。使用jQuery跨站點AJAX
我聽說過JSONP,但想知道是否有人可以給我一個具體的例子來了解整個過程。如果可能的話,我想盡可能少地改動我的腳本。我應該使用一個proxy.php的種類?
謝謝你的時間。
我有一個現有的jQuery插件,這使得大量的AJAX調用(主要是JSON)。我想知道允許它進行跨站點調用的最快速度是什麼,即$ .get和$ .post URL不會來自同一個域。使用jQuery跨站點AJAX
我聽說過JSONP,但想知道是否有人可以給我一個具體的例子來了解整個過程。如果可能的話,我想盡可能少地改動我的腳本。我應該使用一個proxy.php的種類?
謝謝你的時間。
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?
如果您可以控制遠程域,或者遠程域有權限crossdomain.xml,則可以使用類似flXHR的庫,並結合其jQuery plugin。
您也可以使用CORS而不是JSONP,與ff,chrome,Safari一起使用。 CORS安裝起來不麻煩,只需要服務器端的過濾器。
請仔細閱讀本文。 唯一的限制是IE不支持這個和舊版本的FF,chrome也有一些問題。
http://techblog.constantcontact.com/software-development/using-cors-for-cross-domain-ajax-requests/
不錯!我會繼續測試這個。除了我認爲回聲統計應該打印$ json變量,而不是$數據。那是對的嗎 ? – 2011-10-25 18:07:17
@PHP_Jedi:那會是正確的。我剛剛糾正了這個錯字(令人尷尬的是,在那裏已經有2年了)。 – 2011-10-25 20:25:03