標籤:ebs 年齡 後台 newton from query web title success
Asp.Net WebApi+JQuery Ajax的Get請求整理
一、總結
1.WebApi 預設支援Post提交處理,返回的結果為json對象,前台不需要手動還原序列化處理。
2.WebApi 接收Post提交參數需要指定([FromBody] string name)
3.WebApi 中如果只接收一個基礎型別參數,不能指定key的名稱
4.WebApi Post請求Action只能接收一個參數,也就是說一個Action中[FromBody]僅可指定一次
5.WebApi Post請求處理多個參數可以使用類對象方式接收參數例如:Student
6.在接收Post參數時,如果不想定義類,可以使用Newtonsoft.Json.Linq的JObject json對象容器接收參數
7.(不推薦使用)此接收參數可以使用dynamic本質是使用的JObject,但是提交參數需要指定字串類型,contentType: ‘application/json‘,類似WebServer中的指定方式
8.在WebApi的Post請求處理中,背景Action名稱不能使用“GetXXX”方式命名
二、驗證代碼
1.單個參數傳遞
Post擷取請求參數需要指定參數來源 [FromBody],
Post方式提交時,Action的名稱不能使用‘Get‘名稱開頭,
如果只接收一個基礎型別參數,不能指定key的名稱
後台:
/// <summary>/// Post擷取請求參數需要指定參數來源 [FromBody]/// </summary>/// <param name="name"></param>/// <returns></returns>public string ShowName([FromBody] string name){ return $"您傳入的名字:‘{name}’";}public Dictionary<string, string> FindList([FromBody] bool IsShow){ Dictionary<string, string> dict = new Dictionary<string, string>(); if (IsShow) { dict.Add("name1", "張三"); dict.Add("name2", "李四"); } return dict;}
JavaScript:
$.post(‘/api/postuser/showname‘, { ‘‘: ‘張三丰‘}, function (data) { console.info(data); alert(data);});$.post(‘/api/postuser/FindList‘, { ‘‘: true}, function (data) { console.info(data); alert(data);});
二、多個參數傳遞
1.指定類類型 Student
後台:
public class Student{ public string Name { get; set; } public int Age { get; set; }}
/// <summary>/// Post擷取參數可以接收物件類型,接收多個參數/// </summary>/// <param name="stu"></param>/// <returns></returns>public string ShowName2([FromBody] Student stu){ return $"‘{stu.Name}‘的年齡為:{stu.Age}";}
javascript:
$.post(‘/api/postuser/showname2‘, { name: ‘張三丰‘, age: 19}, function (data) { console.info(data); alert(data);});
2.使用JObject
後台:
/// <summary>/// 在接收Post參數時,如果不想定義類,可以使用Newtonsoft.Json.Linq的JObject json對象容器接收參數/// </summary>/// <param name="obj"></param>/// <returns></returns>public object ShowName3([FromBody] JObject obj){ return new { name = obj["name"], age = obj["age"], success = true };}
javascript:
//如果使用JObject,使用對象提交或者使用字串提交後台都能擷取成功$.post(‘/api/postuser/showname3‘, { name: ‘張三丰‘, age: 19}, function (data) { console.info(data); alert(data);});
3.使用dynamic(不推薦)
後台:
/// <summary>/// 在接收Post參數時,如果前台傳入參數為一個字串,可以使用dynamic類型接收,不需要指定[FromBody]/// 此處obj的真正類型:FullName = "Newtonsoft.Json.Linq.JObject"/// </summary>/// <param name="obj"></param>/// <returns></returns>public object ShowName3(dynamic obj){ return new { name = obj["name"], age = obj["age"], success = true };}
javascript:
//需要指定參數類型:contentType: ‘application/json‘,類似WebServer中的指定方式$.ajax({ url: ‘/api/postuser/showname3‘, type:‘post‘, contentType: ‘application/json‘, data: JSON.stringify({ name: ‘張三丰‘, age: 19 }), success: function (data) { console.info(data); alert(data); }});
更多參考:
Asp.Net WebApi Get請求整理(一)
Asp.Net WebAPI Get提交、Post提交處理
Asp.Net WebApi Action命名中已‘Get’開頭問題
Asp.Net WebApi Post請求整理(一)