黃色笑話javascript
近期一個項目須要使用到web apihtml
在使用過程當中,對應get請求方式的使用基本沒出什麼問題java
可是對於post請求情況百出。jquery
今將遇到的的問題列出。以做借鑑。web
問題 -----post方式服務器端接收值爲nullajax
1. 多個參數須要post過去json
ajax代碼c#
以下api
js代碼服務器
function login() { $.ajax({ url: "/api/Login", type: "post", dataType: "json", data: { "name": document.getElementById("name").value, "Password": document.getElementById("pwd").value }, success: function (data) { isLogin(data) //createDb(); } }).fail( function (xhr, textStatus, err) { alert('Error: ' + err); }); }
c#代碼
public UsersModel POST(string name, string Password) { //var a = ModelLogin.user(name.name, name.Password); }
報錯接收不到值
緣由 。 post方式只能接受一個參數並且必須放在
FromBody 裏用FromBody特性標識
正確代碼以下
public UsersModel POST([FromBody]UsersModel name) { var a = ModelLogin.user(name.name, name.Password); return a; }
須要將
UsersModel定義爲類
2.須要post list 對象
這個直接寫js正確代碼
$.ajax({ url: "/api/Exams", type: "post", dataType: "json", contentType: 'application/json; charset=utf-8', data: JSON.stringify(json), success: function (data) { alert(data); } }).fail( function (xhr, textStatus, err) { alert('Error: ' + err); });
注意事項。
data數據建議直接寫js對象,對應c#創建的對象。
喜歡拼接方式的key須要留空
參考資料
http://stackoverflow.com/questions/14779679/jquery-posts-null-instead-of-json-to-asp-net-web-api
http://www.asp.net/web-api/overview/working-with-http/sending-html-form-data,-part-1#sending_simple_types