由laravel发送的数组,当我从javascript中使用它时变得向后

Posted

技术标签:

【中文标题】由laravel发送的数组,当我从javascript中使用它时变得向后【英文标题】:array, which has been sent by laravel, becomes backwards when I used it from javascript 【发布时间】:2014-09-12 08:51:54 【问题描述】:

我在控制器中这样做

$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 将元素添加到数组中。 【参考方案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。但我已经得到了答案。非常感谢

以上是关于由laravel发送的数组,当我从javascript中使用它时变得向后的主要内容,如果未能解决你的问题,请参考以下文章

如何使用ajax将数据从视图发送到控制器laravel?

Laravel 4 - 将 json 解码到视图中

Laravel:当我从 jquery 添加变量时,如何修复 Null 输入?

laravel 和 json 数组

如何将数组数据从 vuejs 传递到 laravel api 控制器

laravel:将视图插入数组