使用调用Ajax将字符串数组发送到mvc Controller

时间:2015-06-16 09:19:22

标签: javascript jquery arrays ajax asp.net-mvc

我试图从表格列中获取值,然后将其放入数组中,然后将其发送到我的控制器。发生了一些非常奇怪的事情,你会在下面看到:

这是我的JS代码:

var result = [];

        $('td:nth-child(' + columnNbr + ')').each(function () {
            var t = $(this).html();
            result.push(t);
        });

        $.ajax({
            type: "POST",
            url: '@Url.Action("UpdateTable", "Home")',
            dataType: "html",
            traditional: true,
            data: { values: result },
            success: function (data) {
            }
        });

My Array"结果"充满了我需要的价值观。

这是我的控制器:

public ActionResult UpdateTable(List<string> values)
{
    return View("index");
}

这会返回500内部错误。 让我疯狂的是这个 - &gt;如果我从我发布的内容修改我的JS:

        //$('td:nth-child(' + columnNbr + ')').each(function () {
        //    var t = $(this).html();
        //    result.push(t);
        //});

        result.push("test1");
        result.push("test2");

Ajax调用工作正常......我检查了&#34; typeof $。(this).html()&#34;而且都是字符串!

我不知道出了什么问题。

2 个答案:

答案 0 :(得分:2)

您只需将var t = $(this).html();更改为var t = $(this).text();

即可

答案 1 :(得分:1)

为什么不使用 $.post()

var result = [];

$('td:nth-child('+columnNbr+')').each(function(){
    result.push($(this).text());
});

$.post('@Url.Action("UpdateTable", "Home")', {values: result});

或者如果您需要回调:

$.post('@Url.Action("UpdateTable", "Home")', {values: result}, function(data){
    // what to do
});