我试图在javascript中创建一个PHP对象。这是我的脚本:
<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,如何解决这个问题?
谢谢
您忘记关闭.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>
正如注释所说,您应该考虑使用(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"}
]
echo json_encode($a)就会输出这样的结果
您的函数没有正确关闭:
}
}
?>
];
}); // <--- add this
</script>
This:
<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++。