【问题标题】:Using AJAX to send data to FormCollection使用 AJAX 向 FormCollection 发送数据
【发布时间】:2017-12-08 17:00:07
【问题描述】:

我正在尝试使用 FormCollection 而不是模型。 我创建了我的 AJAX 请求:

myData = {
        id: '1',
        name: $("#name").val()
    };
    $.ajax({
        type: "GET",
        url: '/testController/Test',
        data: JSON.stringify(myData),
        contentType: 'application/json; charset=utf-8',
        success: function (data) {
            // do something
        },
        error: function (erro) {
            console.debug(erro);
        }
    });

我的带有 FormCollection 的控制器

[HttpGet, ValidateInput(false)]
    public JsonResult Test(FormCollection formData)
    {
        string name = formData["name"].ToString();
    }

但是,我的 formData 始终为空。有谁知道为什么?

谢谢

【问题讨论】:

  • 为什么?我想获取不发布的数据
  • 如果你想要一个 GET,然后删除 contentType 选项和 JSON.stringify() - 它只是 data: myData(GET 没有正文)。并且方法变成public JsonResult Test(int id, string name)

标签: ajax asp.net-mvc formcollection


【解决方案1】:

如果您正在发出 GET 请求,那么您实际上是在发出此请求。您需要通过Request['id'] & Request['name'] 访问参数。

请求 URI:/testController/Test?id={data_id}&name={data_name}

请求正文:<empty>

但是,如果您正在发出 POST 请求,那么您就是在发出这个请求:

请求 URI:/testController/Test

请求正文:{"id":"data_id","name":"data_name"}

请求正文被解析,您可以通过FormCollection访问数据。这就是为什么当你发出 GET 请求时FormCollection 总是为空。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-04
    • 2018-06-18
    • 2015-04-16
    • 1970-01-01
    • 2017-04-29
    • 2011-09-17
    • 1970-01-01
    • 2016-08-02
    相关资源
    最近更新 更多