基于其他组合框的一个组合框的值 - php

时间:2011-01-25 10:31:43

标签: php

我在数据库中有两个表类别和子类别。 在我的表格上,我有两个组合框类别和子类别。现在我希望当我更改类别时,子类别应该相应地改变。如果在javascript中定义数组,我可以这样做。但在我的情况下,子类别是根据所选类别的值从数据库加载。我可以使用php从数据库中获取数据。如果数据在php数组中,我将如何将其传递给javascript。如何在没有ajax的情况下解决这个问题?如果解决方案是JSON,那我怎么能实现json,因为我从未使用它。

2 个答案:

答案 0 :(得分:2)

PHP代码是服务器端,首先进行评估,然后处理客户端代码(如Javascript)。因此,您必须预先获取通过PHP切换所需的所有数据,以便通过javascript操作它们。

编辑:

示例:

<?php

   $arej[]="one";
   $arej[]="two";
   $arej[]="three";
   $arej[]="four";
?>
<script type="javascript">

var jarray = new Array;

<?php
for($i=0;$i<count($arej); $i++){
   echo "jarray[$i]='".$arej[$i]."';";
} 
?>

</script>

答案 1 :(得分:1)

要么将所有子类别都放在JavaScript中,要么必须使用Ajax。

将数据从PHP传递到JavaScript非常容易。如果您在数组$subcategories中有子类别,则可以在JavaScript中安全地使用json_encode($subcategories)的结果(它 - 或者奇怪 - JSON对您的数组进行编码)。

因此,您要么创建一个返回特定子类别的Ajax服务,要么编写一个PHP脚本来生成包含所有子类别的JavaScript数组。

简单的Ajax服务可能如下所示:

$id = (int)$_GET['category']; // The id of the category
$subcategories = ... // Fetch array of subcategories from db
echo json_encode($subcategories);

因此,每当用户点击另一个类别时,您的JavaScript必须对上面的脚本进行Ajax调用,指定新的类别ID。

如果使用jQuery,那么执行Ajax非常容易。

$.ajax({
  url: "subcategories.php?cat=123",
  success: function(encoded){
    $("#output").append(encoded);
  }
});

(上面的示例或多或少直接来自jQuery文档。)要在JavaScript中解析JSON,您可以使用eval(),但该函数是邪恶的。更好地使用JSON.parse()或jQuery替代方案。

var subcategories = JSON.parse(encoded);

现在,变量subcategories包含与包含的PHP脚本中的$subcategories完全相同的数据结构。

相关问题