0

阿贾克斯帖子:

<script type="text/javascript">

        $(document).ready(function () {
            $('#btn').click(function () {
    //            var vals = [];
    //            $('input:checkbox[name=Blanks]:checked').each(function () {
    //                vals.push($(this).val());
    //            });

               // alert(vals);
    //           
                var checkboxData = $(':checked').val();
                $.ajax({
                    // Check the value.
                    type: 'POST',
                    url: '/Home/Extract',
                    data: { 'name': checkboxData },
                    // contentType: 'application/json; charset=utf-8',  // No need to define contentType
                    success: function (result) {

                    },
                    error: function (err, result) {
                        alert("Error in delete" + err.responseText);
                    }

                });
            });

控制器方法:

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Extract(string[] name)
{
}

我的问题是,string[]当我使用数组和单个复选框值时,我的名字中出现了空值,而当我使用其他情况时。关于为什么帖子看起来不错的任何建议或想法?

看法:

<input type="button" id="btn" value="Extract" style="float:right "/>
@foreach (var m in (List<string>)ViewData["list"])
{
    <ul>
    <li>
    <input type="checkbox" class="myCheckbox"  name="Blanks" id="chk" value="@m"/>
    <img src="@m"  alt=""/>
4

1 回答 1

1

首先修复您的标记并id="chk"从您的复选框中删除,因为您不能有 2 个具有相同 ID 的元素。

好的,然后简单地生成一个包含所选复选框值的 javascript 数组,并将此数组 POST 到服务器:

$('#btn').click(function () {
    var values = $('input[type="checkbox"].myCheckbox:checked').map(function() {
        return $(this).val();
    }).toArray();

    $.ajax({
        type: 'POST',
        url: '/Home/Extract',
        data: JSON.stringify({ name: values }),
        contentType: 'application/json',
        success: function (result) {

        },
        error: function (err, result) {
            alert("Error in delete" + err.responseText);
        }
    });

    return false;
});

您的控制器操作签名可能如下所示:

[HttpPost]
public ActionResult Extract(string[] name)
{
    ...
}

Html.CheckBoxFor但是,如果您使用了视图模型和强类型帮助器,那么所有这些都将完全没有必要。

于 2013-06-25T12:16:17.623 回答