1. 程式人生 > >關於xhr和ajax的一些理解

關於xhr和ajax的一些理解

程序 理解 button 之前 傳輸 另一個 frame 存在 繼續

我對ajax的理解。Ajax只是封裝了xmlhttprequest重新開啟了一個線程。對返回值,做出了響應。而如果我們不用xhr的異步的話,而只用同步的話,我們對這個請求,未完成之前,不能發出下一個請求。而關於登陸,局部刷新這個觀點,我並不能理解。使用xhr任然能實現局部刷新,只不過,不能異步處理其他的。如果,我們沒有對xhr處理的話,那麽瀏覽器默認的只是會重新加載一個頁面。我猜。因此,會刷新掉原來的頁面。如果我們用了ajax封裝的話,我們就會對其進行處理。而不會采用瀏覽器的默認處理方式。

因此ajax只是一個異步請求的操作。並沒有達到局部刷新的結果。為啥達到異步刷新的結果,是因為我們沒有對瀏覽器的返回值做處理。瀏覽器默認的是對我們返回的值,弄到子頁面處理。如果,我們對瀏覽器返回的值,做了處理的話,那麽就不會是一個子頁面了。不過這樣的話,確實起到了局部刷新的作用啊。因為有些我們並沒法對請求的結果作出處理。

為了驗證我所說的,我將用button來提交頁面然後用xhr來處理結果,看他是不是能局部刷新。如果能局部刷新的話,那就滿足了我提出的猜想。

好像圖片之類的不是xhr請求,因此不存在跨域的影響。

跨域的影響滿足幾個條件

Json對象,其實就是js對象。傳輸的是json文本。

Xhr是實現了局部刷新的產物。Ajax是實現了異步的產物。

關於iframe可能,我猜也只是對響應進行了攔截,然後,對中間過程進行了處理,這樣就不會反應在子頁面中咯。好厲害。所以iframe是另一個頁面。

Async = false

如需使用 async=false,請將 open() 方法中的第三個參數改為 false:

xmlhttp.open("GET","test1.txt",false);

我們不推薦使用 async=false,但是對於一些小型的請求,也是可以的。

請記住,JavaScript 會等到服務器響應就緒才繼續執行。如果服務器繁忙或緩慢,應用程序會掛起或停止。或者說我們不能操作其他的只能等這個請求完成才能操作其他的。這就好好玩咯。是嗎?是這樣的嗎?好玩。

關於啥我又忘記,我想說啥了。好無奈。哦

其實是這樣的,瀏覽器解析html的話,是逐行逐行來進行解析的。遇到js,css的link的話,瀏覽器會異步加載。然後進行解析。

關於xhr和ajax的一些理解