我在下面有一个ajax调用,它将执行POST以提供以下数据
self.present_conditions =“[{”Township“:”12“,”Range“:”21“,”Section“:”111“,”Acres“:”19“}]”
var data = ko.toJSON(self.present_conditions());
$.ajax({
type: "POST",
url: "/Home/PBHEP",
contentType: "application/json; charset=utf-8",
data: data
}).done(function () {
alert("Data Saved");
});
我希望在下面的操作结果中在我的服务器端接收此数据,但我总是以null值结束。
[HttpPost]
public ActionResult PBHEP(string[] data)
{
return View();
}
我应该怎么做才能将该阵列放到服务器端。
提前谢谢。
答案 0 :(得分:0)
发送一个对象数组(或设置一个键值对),服务器需要一个String数组。
因此,尝试将服务器方法的类型参数更改为Dictionary []或dynamic。
我希望它有所帮助。
答案 1 :(得分:0)
您发送键值数组对象但在控制器的操作中接收字符串数组: 1)如Damien所述,您需要将输入参数更改为Dictionary 2)您需要更改发布请求并添加数据类型:“json”
var data = ko.toJSON(self.present_conditions());
$.ajax({
type: "POST",
url: "/Home/PBHEP",
datatype: "json",
contentType: "application/json; charset=utf-8",
data: data
}).done(function () {
alert("Data Saved");
});
答案 2 :(得分:0)
根据我的经验,当我对数组进行字符串化时,它具有与present_conditions相同的格式,但我在服务器端收到的不是数组而是单个字段。如果您将控制器更改为
[HttpPost]
public ActionResult PBHEP( string Township, string Range, string Section, string Acres)
{
return View();
}
应使用发送的数组中的匹配数据填充这些字段。希望这会有所帮助。
答案 3 :(得分:0)
我遇到了同样的问题,然后通过将数组作为JSON序列化字符串传递来修复它。
$.ajax({
type: 'GET',
url: '/Controller/ActionMethod/',
data: { idsJSON: ko.toJSON(ids) },
从服务器端,我收到它以反序列化数组
public JsonResult ActionMethod(string idsJSON)
{
List<long> ids = JsonConvert.DeserializeObject
<List<long>>(idsJSON);
答案 4 :(得分:0)
所以发生了什么我终于放弃了用ajax做帖子而且我使用了一个简单的jquery帖子,现在我能够在我的控制器中获取值
<强> JS:强>
self.submit_conditions = function () {
var PC_data = ko.toJSON(self.present_conditions());
var FC_data = ko.toJSON(self.future_conditions());
$.post("/Home/PBHEP", { "PC": PC_data, "FC": FC_data});
}
<强>控制器强>
[HttpPost]
public ActionResult PBHEP(string PC,string FC)
{
JavaScriptSerializer ser = new JavaScriptSerializer();
List<Conditions> PC_rows = ser.Deserialize<List<Conditions>>(PC);
List<Conditions> FC_rows = ser.Deserialize<List<Conditions>>(FC);
}
希望这对某人有所帮助。 谢谢大家的帮助。