0

在内部视图中,我有带有相应复选框的图像列表。我想检查一个或多个图像并将图像 ID 存储到 int 数组中。此 int 数组应发送到控制器以进行进一步处理。

我已经在这上面花了太多时间,而且我在控制器上得到 int[] data null

问题是:为什么我在控制器上得到空值?

解决了! 在我的 _Layout jquery 脚本中,捆绑调用位于文档的末尾,当我移到顶部时,一切正常。

看法

<div id="newsImages">
    <img width="50" height="50" alt="" src="/imageOne.jpg">    
        <input type="checkbox" class="imgCheckbox" id="4">   
    <img width="50" height="50" alt="" src="/imageTwo.jpg">    
        <input type="checkbox" class="imgCheckbox" id="5">   
    <input type="button" value="Delete" name="deleteImgBtn" id="deleteImgBtn" class="deleteImagesBtn">    
</div>

JS

var imgList = [];
$(document).on("click", "#deleteImgBtn", function (e) {
    e.preventDefault();
    $('.imgCheckbox:checked').each(function () {        
        var id = $(this).attr('id');
        //add image id to the array of ints
        imgList.push(id);
    });
    jQuery.ajaxSettings.traditional = true;    
    var options = {
        url: '/news/deleteimages',
        type: 'POST',        
        data: { data: imgList },
        traditional: true
    };
    $.ajax(options).done(function (data) {
        var $target = $('#newsImages');
        $target.html(data);
    });
    //reset array of int to prevent browser to send duplicated 
    //img id to the controller on second attempt after ajax request is completed
    imgList.length = 0;
    //prevent browser from any default actions
    return false;
});

控制器

public ActionResult DeleteImages(int[] data)
{
  ...
}
4

2 回答 2

2

您可以序列化您的数组并通过 ajax 发送它。

在 jQuery 中序列化为 JSON

并读取序列化数组,解析它..检查每一件事然后去

于 2013-05-10T12:09:06.943 回答
0

使用JSON.stringify.

var myarr = [];
myarr[0] = 'as';
myarr[1] = 'we';

console.log ( JSON.stringify( myarr ) );

输出是:

["as","we"]

在您的 PHP 端,使用json_decode

print_r( json_decode('["as","we"]') );

将输出:

Array ( [0] => as [1] => we ) 
于 2013-05-10T12:20:31.903 回答