ajax請求中contentType與dataType區別


本文參考了兩篇博客的內容:

http://blog.csdn.net/john1337/article/details/60867183

http://blog.csdn.net/qq441568267/article/details/75353825

contentType: 告訴服務器,我要發什麼類型的數據

dataType:告訴服務器,我要想什麼類型的數據,如果沒有指定,那麼會自動推斷是返回 XML,還是JSON,還是script,還是String。


ajax請求中contentType與dataType含義


前端jQuery ajax 請求:

[javascript] view plain copy
  1. $.ajax({  
  2.                 url: getAbsoluteUrl('score/findScore'),  
  3.                 type: 'POST',  
  4.                 dataType: 'json',    //第1處  
  5.                 success: function (res) {  
  6.                     alert(res);  
  7.                 },  
  8.                 error: function (msg) {  
  9.                   alert(msg);  
  10.                 }  
  11.             });  
後端 springMVC代碼

[java] view plain copy
  1. @RequestMapping(value = "findScore", method = RequestMethod.POST, produces = "application/json")  
  2.     public @ResponseBody Map findScore(Model model, ServletRequest request) {  
  3.           
  4.         Map<String , Object> map = new LinkedHashMap<String, Object>();  
  5.   
  6.         map.put("createdUser","jiabaochina");  
  7.         map.put("score"5);  
  8.         map.put("status""success");  
  9.         return map;  
  10.     }  
以上的代碼是沒有問題的,請求後會直接alert一個js對象。

這是因爲ajax請求dataType值爲json,jquery就會把後端返回的字符串嘗試通過JSON.parse()嘗試解析爲js對象。

我又把dataType值改爲'text',結果彈出框直接顯示後臺返回的json字符串。

我又把dataType值改爲'html',結果彈出框直接顯示後臺返回的json字符串。


 以下是jquery api的解釋:

通過dataType選項還可以指定其他不同數據處理方式。除了單純的XML,還可以指定 html、json、jsonp、script或者text。

其中,text和xml類型返回的數據不會經過處理。數據僅僅簡單的將XMLHttpRequest的responseText或responseHTML屬性傳遞給success回調函數,

'''注意''',我們必須確保網頁服務器報告的MIME類型與我們選擇的dataType所匹配。比如說,XML的話,服務器端就必須聲明 text/xml 或者 application/xml 來獲得一致的結果。

如果指定爲html類型,任何內嵌的JavaScript都會在HTML作爲一個字符串返回之前執行。類似的,指定script類型的話,也會先執行服務器端生成javascript,然後再把腳本作爲一個文本數據返回。

如果指定爲json類型,則會把獲取到的數據作爲一個JavaScript對象來解析,並且把構建好的對象作爲結果返回。爲了實現這個目的,他首先嚐試使用JSON.parse()。如果瀏覽器不支持,則使用一個函數來構建。JSON數據是一種能很方便通過JavaScript解析的結構化數據。如果獲取的數據文件存放在遠程服務器上(域名不同,也就是跨域獲取數據),則需要使用jsonp類型。使用這種類型的話,會創建一個查詢字符串參數 callback=? ,這個參數會加在請求的URL後面。服務器端應當在JSON數據前加上回調函數名,以便完成一個有效的JSONP請求。如果要指定回調函數的參數名來取代默認的callback,可以通過設置$.ajax()的jsonp參數。


contentType: 告訴服務器,我要發什麼類型的數據



發佈了3 篇原創文章 · 獲贊 16 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章