2013-11-22 62 views
0

顯然,使用jQuery.ajax的JSONP請求並不是真正的異步,而只是使用腳本DOM元素方法,向頁面添加腳本標記。我從這裏發現:https://groups.google.com/forum/#!topic/jquery-dev/5-tKI-7zQvs,其中指出:如果JSONP只是動態腳本,請求是什麼時候發出的?

跨域JSONP根本就不是AJAX。它不使用XMLHttpRequest。 它不過是一個加載JavaScript代碼的動態腳本元素。

即在頁面加載後動態腳本元件然後被處理(在JSONP的情況下,只是意味着回調函數與在阿賈克斯指定一個從URL源JSON數據的參數執行呼叫)。

所以,如果我有一個HTML網頁下面的代碼:

<script> 
    jQuery(document).ready(function() { 
     jQuery.ajax({dataType:'jsonp', data:'FIRST'...}); 
    }); 
</script> 
<script> 
    jQuery(document).ready(function() { 
     jQuery.ajax({dataType:'jsonp', data:'SECOND'...}); 
    }); 
</script> 

會有什麼事情的順序是什麼?

難道是以下之一:

(1)腳本標籤做第一請求添加到DOM

(2)腳本標籤做第二請求添加到DOM

(3)第一請求製成

(4)第二請求作出

或:

(1)腳本標籤做第一請求添加到DOM

(2)第一個請求作出

(3)腳本標籤做第二請求添加到DOM

(4)第二請求作出

或者可能以上都沒有,我誤解?

謝謝。使用jQuery.ajax

回答

5

顯然JSONP請求是不是真的異步

這是不對的,他們是。

相反,它只是使用腳本DOM元素方法,向頁面添加腳本標記。

的確如此。

跨域JSONP根本就不是AJAX。它不使用XMLHttpRequest。

XMLHttpRequest不是Ajax的先決條件。(XML不是Ajax或XMLHttpRequest的先決條件(因爲XML當時很酷,而且開發人員需要說服管理人員將其添加到產品中),所以XML不是必備條件)

什麼是事情的順序是什麼?

  1. 第一個腳本將運行(創建一個現成的事件處理程序)
  2. 第二個腳本將運行(創建第二個準備的事件處理程序)
  3. ready事件將觸發
  4. 第一動態腳本元素將被添加到頁面
  5. 第二個動態腳本元素將被添加到頁面
  6. 第一個動態腳本元素將執行
  7. 第二動態腳本元件將執行
+0

然而注意的是圖6和7可以根據每個請求需要多長時間發生反向。 –

+0

謝謝。非常感激。 – user265330

+0

@Quentin我們觀察到,隨着每次添加新的「

相關問題