使用json_encode访问js中的php数组

时间:2012-02-29 12:43:39

标签: php javascript

我在我的代码中使用php和JS。我的要求是我需要从my-sql数据库中获取值并动态显示到下拉列表中。我使用JS填充下拉列表但是使用php获取值(a通常的事)。 所以我面临的问题是,一旦我从php代码中获取值并使用json_encode对其进行编码以在JS中访问该数组,它就会显示出像[object Object]这样的值。

请帮忙.. 感谢。

示例代码: -

<?php
$result=mysql_query("select Location from servicelist")or die (mysql_error());
while($row = mysql_fetch_array($result))
 $output[]=$row;
   $row=mysql_fetch_assoc($result);
$output[]=$row;

 ?>
<script language="javascript">
function addOption_list(selectbox){
<?php echo 'var month='.json_encode($output);?>

for (var i=0; i < month.length;++i){
addOption(document.drop_list.AreaList, month[i], month[i]);
//Once the value of the area will get selected we will call sub area based
//on the area selected from the db
}
addSubAreaList();
}

2 个答案:

答案 0 :(得分:1)

在PHP mysql_fetch_assoc($result);中返回一个关联数组,因此JavaScript中的month变量的格式为:

var month = [{field: 'value', otherField: 'value'}];
因此,你的循环需要使用类似的东西:

var areaList = document.drop_list.AreaList;
for (var i=0, len = month.length; i < len; ++i){
  addOption(areaList, month[i].field, month[i].otherField);
}

答案 1 :(得分:0)

JavaScript中的对象类似于PHP中的“关联数组”。如果您有一个对象并且您尝试在控制台上编写它,它将评估为字符串“[object Object]”。如果您需要正确的字符串表示形式,JSON将使用JSON.stringify在您的JavaScript中再次对其进行编码。