Problem:

问题:

I am trying to send an array of strings via jquery post but they dont get parsed correctly, all I get is null in the list.

我试图通过jquery post发送一个字符串数组但是它们没有被正确解析,我得到的只是列表中的null。

javascript:

JavaScript的:

var array = [];
array.push("test")
array.push("test2")
array.push("tes3")

$.post("Admin/FilteredKeys", $.param(JSON.stringify({ Ids: array, OnlyActive: true }, true)));

C# Model:

C#型号:

public class MySearch
{
    public bool OnlyActive { get; set; } = true;
    public List<string> Ids { get; set; }
}

action in controller:

控制器中的动作:

public async Task<IActionResult> FilteredKeys(MySearch filter)
{
    var data = await _service.GetFilteredKeyTypes(filter);
    return View();
}

I've googled and found that the traditional property need to be set to true but it remains the same, i tried this snippet as well:

我用谷歌搜索,发现传统的属性需要设置为true但它保持不变,我也试过这个片段:

$.ajax({
    type: "POST",
    url: "Admin/FilteredKeys",
    data: postData,
    success: function(data){
        alert(data.Result);
    },
    dataType: "json",
    traditional: true
});

This is a .net core project do additional I need to change additional paramaters somewhere?

这是一个.net核心项目我还需要在某处更改其他参数吗?

EDIT:

编辑:

forgott to add that my original attempt was like this:

forgott补充说我的原始尝试是这样的:

$.Admin.worker.postJson("Admin/FilteredKeys", JSON.stringify({ Ids: array, OnlyActive: true }), function (data) {
    var t = "";
});

postJson: function (url, data, callback) {
    $.LoadingOverlay("show");
    $.ajax({
        url: url,
        type: 'POST',
        data: data,
        contentType: 'application/json; charset=utf-8',
        success: function (data) {
            if (callback)
                callback(data);
            $.LoadingOverlay("hide");
        },
        error: function (event, jqxhr, settings, thrownError) {
            //$.helpers.errorHandler($("#fileDialogErrors"), event.responseText);
            $.LoadingOverlay("hide");
        }
    });
}

5 个解决方案

#1


2

Since I believe accepted answer is not correct - here is alternative one (similar, but not the same as other answers here). First you need to decorate model with FromBody attribute:

因为我认为接受的答案是不正确的 - 这里是替代的答案(类似,但与此处的其他答案不同)。首先,您需要使用FromBody属性修饰模型:

public async Task<IActionResult> FilteredKeys([FromBody] MySearch filter)
{
    var data = await _service.GetFilteredKeyTypes(filter);
    return View();
}

And ajax call should look like this:

并且ajax调用应该如下所示:

var array = [];
array.push("test")
array.push("test2")
array.push("test3")
 $.ajax({
    type: "POST",
    url: "Admin/FilteredKeys",
    data: JSON.stringify({ Ids: array, OnlyActive: true}),
    contentType: "application/json; charset=utf-8",
    success: function(data){
        // ...
    },
    failure: function(errMsg) {
        // ...
    }
});

更多相关文章

  1. jQuery——将title属性用作悬停的文本,但只在同一父类中使用。
  2. Google地图信息窗口左箭头,右箭头传递TypeError:无法读取未定义的
  3. 3.29 学前端 jquery之操作元素之属性操作
  4. 获取复选框的文本属性
  5. 关于制作EPG界面的光标聚焦问题(我制作的是IPTV)。可是一直为光
  6. 将JSON结果返回给ajax请求的MVC ErrorHandling属性仅适用于local
  7. JQuery属性与样式――.val()和增加样式.addClass()
  8. 关于jQuery获取html标签自定义属性值或data值
  9. jquery为属性过滤器动态添加值?

随机推荐

  1. mysql 5.5 zip配置安装
  2. mysql数据库utf-8编码
  3. 机智的MySQL优化器 --- is null
  4. 我需要PHP页面显示mysql数据库中的BLOB图
  5. 利用Intellij+MAVEN搭建Spring+Mybatis+M
  6. MySQL、JDBC安装以及用java连接
  7. mySql中SUBSTRING_INDEX函数用法
  8. mysql数据库之单表查询
  9. MYSQL如何导出存储过程和触发器?
  10. mysql百万级查询怎么样才能快速查询呢