成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

一次Ajax查錯(cuò)的經(jīng)歷

開發(fā) 后端
我有一朋友做網(wǎng)站,用 jQuery 的 Ajax 方法從后端載入一段 HTML 代碼然后動(dòng)態(tài)插入到網(wǎng)頁的 Div 元件中。這個(gè)東西太普遍了。jQuery 強(qiáng)大的 load 方法可以完成這個(gè)事情。朋友的代碼是這么寫的:

先說故事,再說想法吧。

我有一朋友做網(wǎng)站,用 jQuery 的 Ajax 方法從后端載入一段 HTML 代碼然后動(dòng)態(tài)插入到網(wǎng)頁的 p 元件中。這個(gè)東西太普遍了。jQuery 強(qiáng)大的 load 方法可以完成這個(gè)事情。朋友的代碼是這么寫的:

  1. var tab = jQuery ("#dynamic_tab");
  2. var url = "/list_ajax/";
  3. tab.load (url); 

簡(jiǎn)單到不能再簡(jiǎn)單了。在 Chrome,F(xiàn)irefox,Safari 下運(yùn)行一點(diǎn)問題也沒有,只有 IE 不行,不管是 IE7,IE8,還是 IE9。問題的癥壯是,使用 IE 訪問那個(gè) Ajax 的鏈接,沒有問題,但是在 jQuery 的 Ajax 方法返回了“undefined”的 respons 對(duì)象。沒有任何報(bào)錯(cuò)!

怎么搞也搞不定,只好 Google 了一下——“jQuery load IE”,一看,很多人都在問這個(gè)問題。于是開始了散彈槍編程方式

排在第一的就是 StackOverflow 被瀏覽了 33K 次的這個(gè)問題:jQuery’s .load () not working in IE – but fine in Firefox, Chrome and Safari,答案沒有被打勾(不靠譜),StackOverflow 還有很多人問相似的問題,不過都沒有答案。不管三七二十一,先試了一下,散彈槍嘛。試了半天都沒有用。

然后上 Google 查,又看到有人說的 IE 緩存的問題,什么,要把 cache 設(shè)置成 false,或是用下面的方法來解決:

  1. var tab = jQuery ("#dynamic_tab");
  2. var fuckie = Math.random ();
  3. var url = "/list_ajax/"+"?fuckie="+fuckie;
  4. tab.load (url); 

反正還是一樣,統(tǒng)統(tǒng)不 Work,幾乎所有的都試了,都不 Work。搞了一天的朋友惱怒道:“Microsoft 應(yīng)該快點(diǎn)倒閉吧,產(chǎn)品太爛了”。IE 的確是太爛了。

于是我用 IE9 的網(wǎng)頁調(diào)試器可以看到點(diǎn)了 Ajax 的鏈接后,IE 對(duì)網(wǎng)站有 http 的 Ajax 請(qǐng)求,也可以看到請(qǐng)求返回了,但是就是不顯示在我的頁面上——jQuery 的 Ajax 的 responseText 為 undefined!

對(duì)于我這個(gè)老家伙,對(duì) jQuery 也不熟,我只得開始調(diào)試 jQuery 的代碼,想看看里面干了什么,報(bào)了什么錯(cuò)?調(diào)了一個(gè)小時(shí),基本上把 jQuery 的 Ajax 的封裝看懂了七七八八了,但是還是沒找到為什么有問題。

于是,我只得架起原生態(tài)的 Ajax,看看 IE 的那個(gè) Ajax 的 ActiveX 的對(duì)象干了什么事?寫了下面的代碼(當(dāng)年寫 Ajax 就是這么寫的,所以也不費(fèi)勁,況且網(wǎng)上還有例程可以抄):

  1. function InitAjax ()  
  2. {  
  3.     var ajax=false;  
  4.     try {  
  5.         ajax = new ActiveXObject ("Msxml2.XMLHTTP");  
  6.     } catch (e) {  
  7.         try {  
  8.             ajax = new ActiveXObject ("Microsoft.XMLHTTP");  
  9.         } catch (E) {  
  10.             ajax = false;  
  11.         }  
  12.     }  
  13.     if (!ajax && typeof XMLHttpRequest!='undefined') {  
  14.         ajax = new XMLHttpRequest ();  
  15.     }  
  16.     return ajax;  
  17. }  
  18.    
  19. var ajax = InitAjax ();  
  20. ajax.open ("GET", url, true);  
  21. ajax.onreadystatechange = function() {  
  22.     if (ajax.readyState == 4 && ajax.status == 200) {  
  23.         var show = document.getElementById ("HaoChenp") .value;  
  24.         show.innerHTML = ajax.responseText;  
  25.     }  
  26. }  
  27. ajax.send (null);  
  28.  

一運(yùn)行,還是不行,沒見 IE 報(bào)什么錯(cuò),不過,可以確定這不是 jQuery 的問題了,估計(jì)還是我們自己程序的問題。不過此時(shí)的程序太好調(diào)試了,調(diào)試中,在 IE9 下調(diào)式發(fā)現(xiàn)原生的 IE 的 Ajax 對(duì)象在 onreadystatechange 函數(shù)里,其 responseText 是下面這個(gè)樣子:

什么是“系統(tǒng)錯(cuò)誤: -1072896658”?上 google 一查,一堆頁面,基本上是說亂碼了,也就是 ajax 的后端程序返回的網(wǎng)頁編碼不認(rèn)識(shí)吧。需要在返回的 http header 里加上 charset=utf-8。

于是,修改后端的 Ajax 的后端程序,明確指定了返回的 HTTP Header 中的 charset,于是 IE 下就工作正常了,再切回 jQuery 的 load 代碼,一切正常了。

舉一反三,這個(gè)問題的原因就是因?yàn)槲覀儧]有按照規(guī)范去寫網(wǎng)頁。所以,舉一反三,HTML 的規(guī)范還有哪些,太多了,記也記不住。但也許你會(huì)知道有一個(gè)叫 http://validator.w3.org 的網(wǎng)站可以幫你校驗(yàn)?zāi)憔W(wǎng)頁中的很多不規(guī)范的東西。

后記

我把這個(gè)問題和過程分享出來,主要有這么幾個(gè)目的,并拋出幾個(gè)問題,大家可以思考一下:

1)這個(gè)問題網(wǎng)上有很多人都在報(bào),但是基本上找不到答案(包括 StackOverflow),所以,我分享出來,填補(bǔ)一下空白。

2)我相信我們的程序員天天都在經(jīng)歷這樣的事,我不知道大家在遇到這樣的事情會(huì)怎么做?也許大多數(shù)人都在網(wǎng)上查各種解決方案,然后一個(gè)一個(gè)的試,直到試對(duì)了——散彈槍式的編程,呵呵。當(dāng)然,大多數(shù)答案都是可能找到的。但當(dāng)我們找到答案了后,我們還會(huì)深入去了解這個(gè)問題的具體原因并舉一反三地去思考一其周邊的東西嗎?

3)另外,在今天這樣N多框架,N多 lib,N多開源的年代下,不知道大家有沒有失去了從零開始自己寫代碼的能力?比如上面的這個(gè)問題,不知道有多少人還會(huì)自己寫原生態(tài)的 Ajax?不過,我還是建議大家能在使用各種框架的時(shí)候,明白那些最基礎(chǔ)的知識(shí),求甚解,知其然知其所以然,真的很重要。

我是從那個(gè)“吃糠的年代”過來的程序員,那些的程序員什么都要自己干,很辛苦,今天我和很多人說我以前的那些經(jīng)歷,會(huì)被笑話,但是我從這些什么都自己的干的年代過的經(jīng)歷,讓我受益很多。我把我的想法分享給大家,希望對(duì)大家有用。

原文鏈接:http://news.cnblogs.com/n/155378/

【編輯推薦】

  1. AJAX調(diào)用方式總結(jié)

  2. 精品 jQuery Ajax 分頁插件和教程

  3. 輕松掌握AJAX(jQuery)異步通信

  4. Jscex+jQuery UI打造游戲力度條

  5. 10條建議讓你創(chuàng)建更好的jQuery插件

【責(zé)任編輯:張偉 TEL:(010)68476606】

責(zé)任編輯:張偉 來源: 博客園
相關(guān)推薦

2023-03-29 09:36:32

2025-03-17 10:01:07

2021-12-06 19:29:17

LRU內(nèi)存算法

2011-04-13 09:21:30

死鎖SQL Server

2016-12-06 09:34:33

線程框架經(jīng)歷

2013-04-01 10:27:37

程序員失業(yè)

2013-01-17 10:31:13

JavaScriptWeb開發(fā)firebug

2021-04-13 18:17:48

Hbase集群配置

2021-01-22 05:35:19

Lvm模塊Multipath

2012-07-12 14:35:31

面試經(jīng)歷

2015-04-28 15:31:09

2018-09-14 10:48:45

Java內(nèi)存泄漏

2022-06-10 11:06:23

服務(wù)下線

2017-11-09 09:06:29

流量暴增優(yōu)化

2020-11-23 07:13:13

Nodejs源碼

2022-07-13 08:31:18

React問題排查

2018-12-06 16:25:39

數(shù)據(jù)庫服務(wù)器線程池

2020-02-10 10:15:31

技術(shù)研發(fā)指標(biāo)

2019-04-04 15:00:40

SQL索引數(shù)據(jù)庫

2020-07-15 08:11:05

Linuxc++程序
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 人人种亚洲 | 国产欧美视频一区 | 免费一看一级毛片 | 密色视频 | 国产一区二区视频免费在线观看 | 久久久久久久久中文字幕 | 国产免费一区 | 国产免费一区二区 | 一区二区三区四区不卡视频 | 九九综合 | 在线观看av中文字幕 | 日日夜夜视频 | 337p日本欧洲亚洲大胆精蜜臀 | 久久不卡 | 韩国精品在线观看 | 国产xxx在线观看 | 天天干狠狠| 黄色毛片免费视频 | 亚洲国产精品久久 | 国产福利在线 | 亚洲精品久久久一区二区三区 | 久久精品一区二区视频 | 国产韩国精品一区二区三区 | 在线中文字幕第一页 | h免费观看 | 日韩精品一区二区三区中文字幕 | 久久噜噜噜精品国产亚洲综合 | 欧美在线观看一区二区 | 国产成人99久久亚洲综合精品 | 久久久久久亚洲精品 | 青草福利 | 成人做爰69片免费观看 | 国产精品色 | 视频一区二区在线观看 | 国产美女精品 | 久草新在线 | 日韩视频区 | 久在线 | 中文字幕日韩一区 | 国产精品国产精品国产专区不卡 | 国产精品一区在线观看 |