jquery ajax請求成功,數據返回成功,seccess不執行的問題


 1.狀態碼返回200--表明服務器正常響應了客戶端的請求;
      2.通過firebug和IE的httpWatcher可以看出服務器端返回了正常的數據,並且是符合業務邏輯的數據。
           但是,程序就是不進入到回調函數success: function(data){****}而是進入到error: function(data){***}
    記得上次是因為存在跨域訪問的問題導致。這次查看不存在跨域的問題。此時就很是不解。
          事情的來源是這樣的: 后台的配置管理模塊中有一塊是關於國際化的配置,增加國際化描述等等,查詢國際化描述。
         問題的來源是在輸入key='a' 查詢前十條數據時發現可以正常的展現數據,但是當我輸入key值為z時,並且再查詢前20條數據是發現數據不能展現,但是server返回了數據庫中的數 據。這時第一反應是事不時數據返回的有問題,粗略的檢查了返回的數據發現和第一次查詢沒有什么明顯的區別。但是只查詢第十四條數據時發現,顯示不出來。這 時候就開始懷疑了數據問題,進而到數據庫中查找第十四條數據沒有發現什么特別的地方。
     這時開始懷疑,難道是JS程序有處理數據兼容性有問題,覺得甚是不可思議。整了大約半小時,越來越覺得不大可能。就放棄了這種想法。
     有轉向,重新審視數據。 但是發現數據從中間換行了,沒太在意。 在糾結了一會兒后問一同事,指出數據可能多了一個"回車鍵",在其指點下到數據庫表中再次查看該條數據發現有一個字段的值多了一個"回車鍵"。刪除后,一切恢復正常。
     思考第一次和第二次碰到的問題,我初步認識到:
    1. 返回的數據類型一定要符合定義的數據類型。即如果你定義的 dataType 是 json 類型的,那么返回來的數據一定是 json 才可以,平且不然就會執行 error 里的程序塊兒。
   (1) 同時需要特別的注意返回的JSON數據是否是嚴格的JSON格式.
   (2) 也應該嚴重關切當后台返回的是一個List 數據(List當中的數據是Json格式)時,有沒臟數據即不是嚴格的JSON格式。
    很隱蔽的可能是數據某一個字段中在開始或末尾含有特殊字符,以"回車鍵"、"Tab鍵"等
    這類隱蔽錯誤的規避措施就是好的編程習慣:
a. 對於在頁面填寫入庫的數據最好強制性的做,去空操作<利用客戶端最好>。
b. 特殊的業務需注意特殊字符。
   這樣還不夠,因為在開發過程中測試或開發人員自己在數據庫中手動添加數據,可能會多加了空格等,導致程序調試,測試帶來了麻煩。 這時就需要考慮在后台代碼對獲取的數據做處理。
      2. 原因是ajax請求跨域了,解決方法是在兩個文件里都添加一段 js: [/b]document.domain,或者采用Jsonp的方式,如我的前一篇blog中提到的。
還有一點對JQuery 中Ajax的一點其它的認識: 客戶端發起請求,得到服務器端的相應是200,<正確拿到服務器響應的數據>沒有問題.此時在判斷進入success 對應的回調函數還是進入到error對應的回調函數之前,可能會校驗一些東西:
      1. 返回的每條數據是否是dataType中定義的數據類型。如果有部分數據不是或者哪怕一條數據沒有嚴格的按照dataType定義的類型,程序就會進入到error:function(){****}
      2. 請求的域和當前域是否是同一域,如果不是同一域也十分有可能進入error:function(){***}   

原帖:http://www.myexception.cn/ajax/413061.html

 

 


 -END-


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM