2010-10-06 53 views
0

這只是一個普遍的問題。哪個更好,傳統的ajax或jquery ajax? 因爲當我使用jquery ajax時,它似乎在IE中做了時髦怪異的東西。它應該是一個跨瀏覽器的庫...所以我對使用哪一個有點困惑。再次,我問這是因爲串行殺手IE ...傳統的Ajax或JQuery的Ajax,哪一個更好?

時髦的奇怪的東西,即有時它停止發送信息到服務器後,只需幾個請求,即使當我把'緩存:假'。

+0

也許你可以澄清你的意思是「怪異的奇怪東西」。 – 2010-10-06 09:07:40

+0

'時髦怪異的東西'可能是因爲IE緩存GET請求是相同的,請嘗試添加一個虛擬參數(timestamp)或使用POST。 – Fermin 2010-10-06 09:13:13

+0

@Fermin:我正在使用「發佈」請求。 – Shaoz 2010-10-06 09:14:54

回答

2

的jQuery $.ajax()應該在IE瀏覽器的罰款。它使用XMLHttpRequest就像你自己做的那樣。但jQuery的方法已經增加了一些頭髮和東西,以使其在不同瀏覽器之間始終如一地工作。

看一看jQuery's ajax source code。其中一個原因是593 sloc,而不僅僅是4,是修復和包裝不同瀏覽器之間的所有不一致。評論將揭示許多這些問題。

+0

我想說jQuery中的大部分代碼都是用於生成語法糖的(儘管當然很多loc需要瀏覽器怪癖。) – npup 2010-10-06 09:19:17

+0

實際上,在'ajax.js中有很少的瀏覽器解決方法代碼'。大多數工作都是爲了獲得額外的功能,比如通過相同的接口,事件鉤子或者使用'load()'將內容注入到DOM中(通過一個可怕的和不明智的正則表達式黑客)來處理JSONP。 – bobince 2010-10-06 09:23:53

+0

@bobince,@npup:你說得對。改編我的誇張聲明:) ......然而,有很多關於「這是因爲Opera沒有這樣做......」,「IE不會在這裏開火」,「那裏有Firefox 1.5」等... – 2010-10-06 09:26:00

2

簡單。 JQuery的。

缺點:

  1. 額外的腳本加載

上升空間:

  1. 實現標準化跨所有主流瀏覽器
  2. 一致< 2分鐘等待的API的答案在這裏SO對於任何問題你有:)
  3. 許多增強功能
2

顯然你必須花時間學習jQuery框架,但結果是jQuery是最常用的JS框架之一。所以你的投資時間將會得到回報,因爲你會發現jQuery可以做的不僅僅是Ajax通信。

此外,jQuery允許遍歷DOM樹的方式是至高無上的,這使得在jQuery中開發事物變得非常簡單。

5

沒有什麼意義的區別。 jQuery的ajax()自然建立在XMLHttpRequest上,它們應該表現相同。我認爲其他一些腳本錯誤導致了「怪異的奇怪東西」。

請注意,如果您想在沒有大型JS庫的情況下進行跨瀏覽器XMLHttpRequest,那麼這些日子實際上非常簡單。所有你需要的是IE6的修正:

if (!window.XMLHttpRequest && 'ActiveXObject' in window) { 
    window.XMLHttpRequest= function() { 
     return new ActiveXObject('MSXML2.XMLHttp'); 
    } 
} 

然後你就可以在任何地方使用標準new XMLHttpRequest接口。不再需要部署overrideMimeType黑客(這是古老的Mozilla里程碑版本),並且從來沒有任何需要嘗試多個ActiveXObject progid。

+0

事情是當我檢查錯誤控制檯在螢火蟲,它不給任何錯誤跡象 – Shaoz 2010-10-06 09:23:23

+0

把一些'調試器'命令看看什麼代碼被執行?如果'ajax()'實際上被調用,它肯定會導致請求。 – bobince 2010-10-06 09:25:50

+0

你也可以使用Charles Proxy或Wireshark(我更喜歡前者)來觀察HTTP流量。這會告訴你是否正在提出請求,請求和響應究竟是什麼樣子 – 2010-10-06 09:33:13

相關問題