0

我在下面有 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");
    });

我想在下面的操作结果中在我的服务器端接收这些数据,但我总是以空值结束。

[HttpPost]
    public ActionResult PBHEP(string[] data)
    {
        return View();
    }

我应该怎么做才能将该阵列放到服务器端。

先感谢您。

4

5 回答 5

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");
});
于 2013-09-11T18:55:31.380 回答
0

根据我的经验,当我对数组进行字符串化时,它的格式与您的 present_conditions 相同,但我在服务器端收到的不是数组,而是单个字段。如果您将控制器更改为

[HttpPost]
public ActionResult PBHEP( string Township, string Range, string Section, string Acres)
{
    return View();
}

这些字段应填充已发送数组中的匹配数据。希望这会有所帮助。

于 2013-09-11T22:22:08.020 回答
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);
于 2013-09-18T15:14:07.383 回答
0

您发送一个对象数组(或设置一个键值对)并且服务器期望一个字符串数组。

因此尝试将服务器方法的类型参数更改为 Dictionary[] 或动态。

我希望它有所帮助。

于 2013-09-11T16:08:46.733 回答
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);
    }

希望这对某人有所帮助。谢谢大家的帮助。

于 2013-09-18T16:15:41.147 回答