将JSON字符串传递给MVC控制器在Firefox上不起作用

时间:2013-03-29 07:39:11

标签: javascript asp.net-mvc json

在asp.net mvc 4 Web应用程序中,我有一个kendo网格(名为ExternalUserList),我在其中添加了一个带复选框的自定义列,以便向选定的用户发送电子邮件。我所做的是以json格式将用户的数据库ID发送到我的mvc控制器。

这是我的javascript代码:

<script type="text/javascript">
    function sendMailToExternalUsers() {
        var ids = [];
        var proId;
        var checkBox = $('#ExternalUsersList > table > tbody > tr td:nth-child(2) > input');

        checkBox.each(function (index) {
            var $input = $(this);

            if ($input.is(':checked')) {
                var count = index + 1;
                proId = $('#ExternalUsersList > table > tbody > tr:nth-child(' + count + ') td:first-child');
                ids.push(proId[0].innerText);
            }
        })

        var postData = JSON.stringify(ids);

        $.ajax({
            type: "POST",
            url: "/ExternalUser/SendEmailToExternalUsers/",
            data: postData,
            dataType: "json",
            contentType: "application/json",
            traditional: true
        });
    }
</script>

这是我的控制器:

[HttpPost]
public EmptyResult SendEmailToExternalUsers(List<string> ids)
{
   //Here i do some processing
}

以上所有代码在Internet Explorer和Chrome中运行良好,但在Firefox上却没有。实际上,如果我从kendo网格中选择了3个用户,则visual studio调试器会显示id List<string>有3个元素,但值为空。在IE和Chrome中,值非常正确。

它错了吗?

1 个答案:

答案 0 :(得分:0)

这很可能与您的客户端代码有关。我猜这就是这条线

ids.push(proId[0].innerText);

尝试使用Firebug进行调试,以查看返回的内容。您可能还想使用jQuery的方法.text().html(),具体取决于您感兴趣的内容。