[英]HTTP POST request to C# Controller
我正在嘗試向我的C#控制器發出HTTP POST請求,但是我需要向數據發送一個數組,所以我嘗試使用JSON.stringify,但是當我開始調試時,我的控制器中的輸入參數是NULL? 我正在從外部API接收天氣預報列表,所以我需要為列表中的每個項目創建新變量,它有一些字段,如:最大和最小溫度,描述,濕度,壓力等,然后當然填寫這些帶有數據的字段並將該變量添加到我的數組中。 然后我需要將這個數組傳遞給我的控制器,這樣我就可以將它存儲在我的數據庫中...我應該在控制器中放入什么類型,這樣它就不會是NULL? 我是全新的,所以請幫助,任何幫助真的更受歡迎!
以下是我要嘗試的代碼:
var myData = { id:100, description:"some text"};
var myDataArray= new Array();
myDataArray.push(myData);
$.ajax({
dataType: "json",
type: "POST",
url: "/Weather1/Weather_post",
contentType: "application/json; charset=utf-8",
data: JSON.stringify(myDataArray),
success: function (data) {
console.log(("OK"));
},
error: function (error)
{ console.log("NOT OK"); }
})
控制器:
[HttpPost]
public JsonResult Weather_post(String MyModuleList)
模型綁定不知道“MyModuleList”是什么。 您可以在此處使用強類型模型,MVC會將JSON綁定到它。
考慮JSON:
var data = {
moduleList: [
{ id:100, description:"some text"}
];
};
和型號:
public class ModuleListModel
{
public List<ModuleModel> ModuleList { get; set; }
}
public class ModuleModel
{
public int Id { get; set; }
public string Description { get; set; }
}
和行動:
[HttpPost]
public JsonResult Weather_post(ModuleListModel model)
{
...
}
結合@Timothy Shields的回答:
您在ajax調用中缺少processData:false。 沒有它,ajax將嘗試將數據打包到URL查詢字符串中。 (見這里: http : //api.jquery.com/jQuery.ajax/ )
你應該好。
您在ajax
調用中缺少processData: false
。 沒有它, ajax
將嘗試將data
打包到URL查詢字符串中。 (見這里: http : //api.jquery.com/jQuery.ajax/ )
如果data
為{ 'animal': 'elephant', 'count': 5 }
且processData
為true
(默認值),則ajax
將使用空HTTP請求對URL /Weather1/Weather_post?animal=elephant&count=5
進行POST
身體。 這就是你想要processData: false
。
嘗試如下:
var myData = { id:100, description:"some text"};
var myDataArray= new Array();
myDataArray.push(myData);
var param = JSON.stringify(myDataArray);
$.ajax({
dataType: "json",
type: "POST",
url: "/Weather1/Weather_post",
contentType: "application/json; charset=utf-8",
data: {'MyModuleList': param },
success: function (data) {
console.log(("OK"));
},
error: function (error)
{ console.log("NOT OK"); }
})
您可能需要將參數名稱與數據一起傳遞。 就像是:
data: {'MyModuleList': JSON.stringify(myDataArray)},
看看這是否適合你。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.