由laravel发送的数组,在我从javascript使用它时会变为向后
我在控制器中执行此操作由laravel发送的数组,在我从javascript使用它时会变为向后,javascript,php,jquery,laravel,laravel-4,Javascript,Php,Jquery,Laravel,Laravel 4,我在控制器中执行此操作 $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, actio
$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>
数组是向后的,因为第一个选项应该是带有
选择操作名称的选项,但它是最后一个选项。您需要为数组元素提供索引0:
$actions = array(0 => 'Select Action Name');
由于使用字符串作为数组的键,因此无法获得使用基于整数的数组时的顺序
对于您的任务,一个简单的解决方案是向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>
var actions={{json_encode($actions)}};
var name={{json_encode($names)};
/*for(var键入操作){
console.log(key,actions[key]);
}*/
var期权=”;
选项=选项+(“”+操作[0]+“”);
for(变量输入名称){
选项=选项+(“”+名称[键]+“”);
}
变量选择=“”+选项+“”;
console.log(选择);
或者这可能是因为您以这种方式获取值。我不知道为什么会发生这种情况,但您可以始终使用reverse()
函数来反转数组,就像这样var reversedAction=action.reverse()
使用而不是+
@Ben,请具体到哪里?我在$actions=array('''=>'Select Action Name')+Action::list('Name','id')上有太多的+
s:)@AnastasieLaurent
,array\u unshift
将元素预先添加到数组中。+1表示感谢。但我已经得到了答案。非常感谢
<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>