對MVC4 AJax傳值的一些理解


最近項目中處理ajax返回值的過程中,總是會提示下載json文件,文件內容就是預期返回的內容,雖然最后經過同事大神的指導解決了,還是希望對ajax請求和處理返回值這個過程了解一下。

1.請求

首先定義了一個Person類,作為數據模型

增加添加角色的文件,表單上傳數據,所以圖中的person對象也可以改寫成 person = "Name=" + $('#Name').val() + "&Age=" + $('#Age').val();

當前請求中Content-Type:application/x-www-form-urlencoded; charset=UTF-8。

如果使用原生的ajax請求(不使用表單上傳)Content-Type:text/html; charset=utf-8。

我們項目中contentType: 'application/json;charset=utf-8' 但這樣數據就無法上傳了

F12看到Request formdata變成了Request Payload,這個又是干什么用的呢?百度了一下formdata和Payload的區別

http://www.w2bc.com/Article/78730 

使用JSON.stringify格式化對象后 request payload已經變成了JSON對象,數據也如願上傳了。

2.返回

MVC中返回值有

View,PartialView:主要用於呈現數據,這里就不用多說了。

Content:類型多用於在ajax操作中需要返回的文本內容,可以指定返回的類型比如"text/html"

Json: 主要用於返回json格式對象,可以用ajax操作;注意:需要設置參數,JsonRequestBehavior.AllowGet,否則會提示錯誤:此請求已被阻止,因為當用在 GET 請求中時,會將敏感信息透漏給第三方網站。若要允許 GET 請求,請將 JsonRequestBehavior 設置為 AllowGet。

JavaScript:返回JavaScriptResult可在客戶端執行的腳本。

Redirect / RedirectToAction / RedirectToRoute:返回指定的地址。

在實際過程中,返回的類型和期待的類型有可能不一致,比如下圖

這里我們把person對象序列化成字符串返回js腳本,但實際上其是一個josn字符串,頁面不會有任何響應。如果我們指定ajax的 dataType: 'json' 那么其返回值會默認成一個json對象,作用就跟return Json一致。

所以這里要注意ContentType和指定的DataType類型,清楚指定的數據類型和我們期望的數據類型,這里要多多使用瀏覽器調試工具,才會發現里面的奧秘。這里寫的比較簡單也可能有理解錯誤的。希望一起學習下

 

 

 

 

 

 

 

 

 


免責聲明!

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



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