被AJAX中DOM的操作郁悶了好幾天,今天總算搞明白了,自學就是苦啊,苦的一把鼻涕一把淚的,把教訓些出來,給後來者提個醒,老鳥就不要看了。
1.DOM中的對XML的操作不要和浏覽器中的弄混掉了,比如getElementByName是浏覽器中內置document對象的DOM操作,你用來操作responseXML就是錯誤的.在浏覽器中,你可以使用document.getElementsByName('tagname')[0].value來獲取控件值,但是在操作 responseXML的時候你就必須使用getElementsByName('tagname')[0].firstChild.data (nodeValue一樣)。
2.如果你要應用responseXML,那麼你要在服務器的應答服務中寫上response.setContentType("text/xml");
假如你的AJAX的代碼沒有一次通過,那麼即使在你更改正確後,頁面也許還是錯誤的,這個是討厭的浏覽器緩存造成的,
萬惡的緩存,我在這上面耽擱了至少1整天
所以你最好在服務器應答頁面寫上禁止緩存的語句 response.setHeader("Cache-Control","no-cache");
(請求url後面+當前系統的毫秒數也是一種方法。在js中用new Date().getTime()來獲取系統與某一特定時間的毫秒差額。).
3.因為當前IE的一些標准不完全符合W3C。例如:
監視控件的改變我們都知道onchange事件,但是對於text控件IE是不支持onchange屬性的,所幸我們onpropertychange事件來監聽text。
再如我們在除IE以外的浏覽器中設置CSS屬性可以使用setAtrribute(),但是在IE中不支持,同樣我們使用EObj.style.stylearrtibute=value來實現。