我正在尝试使用PHP在javascript中创建一个对象。这是我的剧本:
<script>
$(document).ready(function(){
var genres = [
<?php
$last = count($userGenres) - 1;
$i = 0;
foreach($userGenres as $a){
$i++;
echo '{"value":"'.$a['genre'].'", "name":"'.$a['name'].'"}';
if($i < $last){
echo ',';
}
}
?>
];
});
</script>
当我检查生成的源时,它会创建一个有效的对象,但该标记中的整个脚本现在不起作用。如果没有JSON,如何解决这个问题?
由于
答案 0 :(得分:2)
您忘记关闭.ready()
方法及其内部的匿名函数。
试试这个:
<script>
$(document).ready(function(){
var genres = [
<?php
$last = count($userGenres) - 1;
$i = 0;
foreach($userGenres as $a)
{
$i++;
echo '{"value":"'.$a['genre'].'", "name":"'.$a['name'].'"}';
if($i < $last)
{
echo ',';
}
}
?>
];
});
</script>
答案 1 :(得分:0)
您的功能未正确关闭:
}
}
?>
];
}); // <--- add this
</script>
答案 2 :(得分:0)
此:
<script>
$(document).ready(function(){
var genres = [
<?php
$last = count($userGenres) - 1;
$i = 0;
foreach($userGenres as $a)
{
echo '{"value":"'.$a['genre'].'", "name":"'.$a['name'].'"}';
if($i < $last)
{
echo ',';
}
$i++;
}
?>
];
});
</script>
更改:您必须关闭匿名函数和ready()方法。另外,将i ++移动到最后,以便覆盖所有情况(您将丢失一个)。你得到的错误是因为你有错误的i ++。
答案 3 :(得分:0)
正如评论所说,你应该考虑使用(php函数)json_encode代替,这将转向......
php:
$a = array(
array("gender"=> "male", "name"=> "Bob"),
array("gender"=> "female", "name"=> "Annie")
);
Into json:
[
{gender:"male", name:"Bob"},
{gender:"female", name:"Annie"}
]
回应json_encode($ a)就会输出它。