【问题标题】:array, which has been sent by laravel, becomes backwards when I used it from javascript由laravel发送的数组,当我从javascript中使用它时变得向后
【发布时间】:2023-03-27 13:55:01
【问题描述】:

我在控制器中这样做

$actions = array('' => 'Select Action Name') + Action::lists('name' , 'id');

然后我将 $actions 数组发送到视图。

在 Javascript 中:

<script>
    var actions = {{json_encode($actions) }};
    /*for (var key in actions){
        console.log(key, actions[key]);
    }*/
    var options = "";
    for(var key in actions){
        options = options+ ('<option value="'+key+'">'+actions[key]+"</option>");
    }
    var select = '<select name="action_id">' + options + "</select>";
    console.log(select);

</script>

打印select 结果:

<select name="action_id">
    <option value="1">Remove White Space</option>
    <option value="2">extract map latitude</option>
    <option value="3">Extract map longitude</option>
    <option value="">Select Action Name</option>
</select> 

数组是向后的,因为第一个选项应该是带有Select Action Name 的那个,但它是最后一个选项。

【问题讨论】:

  • 或者您可能会以这种方式获得您的价值观。
  • 我不知道为什么会这样,但你总是可以使用 reverse() 这样的函数来反转你的数组 var reversedAction= action.reverse()
  • 使用array_unshift 而不是+
  • @Ben 请问具体在哪里?我有太多+s :)
  • @AnastasieLaurent on $actions = array('' =&gt; 'Select Action Name') + Action::lists('name' , 'id');, array_unshift 将元素添加到数组中。

标签: javascript php jquery laravel laravel-4


【解决方案1】:

你需要给你的数组元素一个索引0:

$actions = array(0 => 'Select Action Name');

【讨论】:

    【解决方案2】:

    由于您使用字符串作为数组的键,因此如果使用基于整数的数组,您将无法获得排序

    对于您的任务,一个简单的解决方案是将两个数组传递给您的 javascript,一个包含

    $actions = array('Select Action Name')
    

    将您的姓名发送到另一个数组中

    $names = Action::lists('name' , 'id');
    

    现在像这样修改你的脚本

    <script>
    var actions = {{json_encode($actions) }};
    var names = {{json_encode($names) }};
    /*for (var key in actions){
        console.log(key, actions[key]);
    }*/
    var options = "";
    options = options+ ('<option value="''">'+actions[0]+"</option>");
    
    for(var key in names){
        options = options+ ('<option value="'+key+'">'+names[key]+"</option>");
    }
    var select = '<select name="action_id">' + options + "</select>";
    console.log(select);
    
    </script>
    

    【讨论】:

    • 为您的努力+1。但我已经得到了答案。非常感谢
    猜你喜欢
    • 2020-10-14
    • 2015-10-31
    • 2013-08-19
    • 1970-01-01
    • 2019-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多