ASP.NET MVC Controller接收ajax post方式發送過來的json對象或數組數據


本例旨在說明我的一種Controller接收ajax提交(POST)過來的json對象或數組信息的方式,感覺應該有更好的方式,歡迎提出寶貴意見。JSON.stringify(jsonObj)不支持IE8以下瀏覽器  前端頁面代碼如下:

 

<script type="text/javascript" src="~/Scripts/jquery-1.11.3.js"></script>
 <form id="fm">
     <div>
         <input id="btn" type="button" value="提交" onclick="SaveTest()" />
     </div>
 </form>
 <script>
    function SaveTest() {
         var jsonObj = [];
         jsonObj.push({"id":1,"name":"123"});
         jsonObj.push({"id":2,"name":"234"});
         jsonObj.push({ "id": 3, "name": "345" });
         $.ajax({
             url: "/Test/Save",
            type: "post",
             dataType: "json",
             async:false,
             data: JSON.stringify(jsonObj),
             success: function (data) {
 
             },
             error: function (XMLHttpRequest, textStatus, errorThrown) {
                 alert(XMLHttpRequest.status);
                 alert(XMLHttpRequest.readyState);
                 alert(textStatus);
             }
         });
     }
</script>

 

Controller->Action代碼如下(需引用System.IO和System.Web.Script.Serialization命名空間):

 

 [HttpPost]
         public ActionResult Save()
         {
             var sr = new StreamReader(Request.InputStream);
             var stream = sr.ReadToEnd();
             JavaScriptSerializer js = new JavaScriptSerializer();
             var list = js.Deserialize<List<Models.SelectList>>(stream);
             if (list.Any())
             {
                 foreach (var item in list)
                 {
                     
                 }
             }
             return View();
        }

 

SelectList對象類(類這里可以加[Serializable]或者不加,因為沒有直接傳輸或存儲SelectList對象,所以我這里沒有加)

 

 public partial class SelectList
     {
         public int id { get; set; }
 
         public string name { get; set; }
 
         public string text { get; set; }
     }

 

大體思路是將json對象或數組轉換為字符串,由前端傳入服務端,Request接收,然后使用json反序列化為實體對象。試過action直接加string參數,但進入action后,接收不到傳過來的json字串。當然,也可以將json字串直接保存在隱藏域,form提交到服務端獲取。

轉自:http://www.echojb.com/ajax/2016/11/20/264249.html

 

 

 

 


免責聲明!

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



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