ajax 請求返回200 但是不進success–2

來源:互聯網
上載者:User
Java代碼  
  1. 繼上次在使用jquery的ajax操作碰到程式請求成功:  
  2.   1.狀態代碼返回200--表明伺服器正常響應了用戶端的請求;  
  3.   2.通過firebug和IE的httpWatcher可以看出伺服器端返回了正常的資料,並且是符合商務邏輯的資料。  
  4.  但是,程式就是不進入到回呼函數success: function(data){****}而是進入到error: function(data){***}  
  5.  記得上次是因為存在跨域訪問的問題導致。這次查看不存在跨域的問題。此時就很是不解。  
  6.  事情的來源是這樣的: 背景組態管理模組中有一塊是關於國際化的配置,增加國際化描述等等,查詢國際化描述。  
  7.  問題的來源是在輸入key='a' 查詢前十條資料時發現可以正常的展現資料,但是當我輸入key值為z時,並且再查詢前20條資料是探索資料不能展現,但是server返回了資料庫中的資料。這時第一反應是事不時資料返回的有問題,粗略的檢查了返回的資料發現和第一次查詢沒有什麼明顯的區別。但是只查詢第十四條資料時發現,顯示不出來。這時候就開始懷疑了資料問題,進而到資料庫中尋找第十四條資料沒有發現什麼特別的地方。  
  8. 這時開始懷疑,難道是JS程式有處理資料相容性有問題,覺得甚是不可思議。整了大約半小時,越來越覺得不大可能。就放棄了這種想法。  
  9.  有轉向,重新審視資料。 但是探索資料從中間換行了,沒太在意。 在糾結了一會兒後問一同事,指出資料可能多了一個"斷行符號鍵",在其指點下到資料庫表中再次查看該條資料發現有一個欄位的值多了一個"斷行符號鍵"。刪除後,一切恢複正常。  



Java代碼  

  1. [align=left][color=red]   思考第一次和第二次碰到的問題,我初步認識到:  
  2. [b]1. 返回的資料類型一定要符合定義的資料類型。即如果你定義的 dataType 是 json 類型的,那麼返回來的資料一定是 json 才可以,平且不然就會執行 error 裡的程式塊兒。[/b]  [color=red]   
  3.    (1) 同時需要特別的注意返回的JSON資料是否是嚴格的JSON格式.  
  4.    (2) 也應該嚴重關切當後台返回的是一個List 資料(List當中的資料是Json格式)時,有沒髒資料即不是嚴格的JSON格式。  
  5.     很隱形可能是資料某一個欄位中在開始或末尾含有特殊字元,以"斷行符號鍵"、"Tab鍵"等  
  6.     這類隱蔽錯誤的規避措施就是好的編程習慣:  
  7. a. 對於在頁面填寫入庫的資料最好強制性的做,去空操作<利用用戶端最好>。  
  8. b. 特殊的業務需注意特殊字元。  
  9.    這樣還不夠,因為在開發過程中測試或開發人員自己在資料庫中手動添加資料,可能會多加了空格等,導致程式調試,測試帶來了麻煩。 這時就需要考慮在後台代碼對擷取的資料做處理。[/color][/align][/color]  
  10. [b]  
  11. 2. 原因是ajax請求跨域了,解決方案是在兩個檔案裡都添加一段 js: [/b]document.domain,或者採用Jsonp的方式,如我的前一篇blog中提到的。  



Java代碼  

  1.   還有一點對JQuery 中Ajax的一點其它的認識: 用戶端發起請求,得到伺服器端的相應是200,<正確拿到伺服器響應的資料>沒有問題.此時在判斷進入success 對應的回呼函數還是進入到error對應的回呼函數之前,可能會校正一些東西:  
  2. 1. 返回的每條資料是否是dataType中定義的資料類型。如果有部分資料不是或者哪怕一條資料沒有嚴格的按照dataType定義的類型,程式就會進入到error:function(){****}  
  3.   
  4. 2. 請求的域和當前域是否是同一域,如果不是同一域也十分有可能進入error:function(){***}  
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.