【问题标题】:jquery array not getting all the values as well as not sent to laravel controllerjquery 数组没有得到所有的值,也没有发送到 laravel 控制器
【发布时间】:2015-03-17 17:51:22
【问题描述】:

我制作了两个自定义 jquery 函数,当复选框被选中时,它会获取一组数据。我试图将数组分配为输入字段的值(类型=隐藏)并将其发送到 laravel 控制器。问题是当我检查几个字段时数组没有正确填充。它只取一个值并将其发送到控制器。我需要将所有检查的值作为数组发送到 laravel 控制器。请在这方面帮助我。我把我的东西贴在下面:

jquery:

<script>
    var allvals = [] ;

    function categoryDelete(){
        $('.categorySelect:checked').each(function(){
            allvals = $(this).val();
        })

        return allvals;
    }

    function subcategoryDelete(){
        $('.subcategorySelect:checked').each(function(){
            allvals = $(this).val();
        })

        return allvals;
    }

    jQuery(document).ready(function($){

        var deleteArray = [] ;

        $('.categorySelect').click(function(){
            deleteArray = categoryDelete();
            $('#deleteArray').attr('value',deleteArray);
            $('#deleteValue').attr('value',0);

        })

        $('.subcategorySelect').click(function(){
            deleteArray = subcategoryDelete();
            $('#deleteArray').attr('value',deleteArray);
            $('#deleteValue').attr('value',1);
        })
    })
</script>

html表单:

{{ Form::open(array('url' => 'manage-category/delete')) }}
<input type="hidden" id='deleteArray' name='deleteArray[]'>
<input type="hidden" id='deleteValue' name='deleteValue[]'>
<button id='deleteBtn' class="btn btn-sm red pull-right">
    Delete <i class="fa fa-times"></i>
</button>
{{ Form::close() }}

路线:

Route::post('/manage-category/delete','CategoryController@deleteCategory');

控制器:

public function deleteCategory()
{
    $deleteArray = Input::get('deleteArray');
    $deleteValue = Input::get('deleteValue');

    var_dump($deleteArray);
    die();
}

调试结果:

array(1) { [0]=> string(1) "2" }

【问题讨论】:

    标签: javascript php jquery arrays laravel


    【解决方案1】:

    你说的allvals = $(this).val(); 每次都会覆盖 allvals 的值。所以它只会存储最后一个选中复选框的值。

    解决方案是追加新值。

    allvals.push($(this).val());
    

    【讨论】:

    • 哦,我真傻 .. 是的,你是对的,我忘记了推动人员.. bt a 现在它显示为 array(1) { [0]=> string(5) "3,3,4" } 为什么?
    • 是的,这是因为输入只存储字符串(它们不能存储像数组这样的复杂对象)。因此,当您设置它们的值时,它会将数据转换为字符串并为您提供逗号分隔的值。一个简单的解决方案(尽管可能不是最强大的)是 $deleteArray = explode(',',$deleteArray[0]) 将其转换回服务器端的数组。在此处阅读更多信息php.net/EXPLODE
    • 谢谢..我知道爆炸是如何工作的..我只是问是否有任何好的解决方案。我个人也不喜欢这些东西.. bdw 非常感谢。你能投票赞成这个问题吗?
    猜你喜欢
    • 2018-04-15
    • 2017-04-16
    • 2016-06-15
    • 2017-12-06
    • 2013-11-17
    • 2016-06-05
    • 1970-01-01
    • 1970-01-01
    • 2015-02-28
    相关资源
    最近更新 更多