如何在DOM中共享php和javascript之间的数据?

如何在DOM中共享php和javascript之间的数据?,php,javascript,dom,Php,Javascript,Dom,如果您阅读了,您可能知道在本分配中不允许在php和javascript DOM之间共享数据的方式: +-----------+ +------------+ +----------| +----------+ +-----------+ |javascript +---+Ajax Request+--+handle.php+-+result.xml+->+DOM parser | +-----------+ +------------+ +----------

如果您阅读了,您可能知道在本分配中不允许在php和javascript DOM之间共享数据的方式:

+-----------+   +------------+  +----------| +----------+  +-----------+    
|javascript +---+Ajax Request+--+handle.php+-+result.xml+->+DOM parser |    
+-----------+   +------------+  +----------+ +----------+  +-----------+    
因此,我正在考虑将mysql中的所有信息作为一个数组一次性获取,并尝试在没有ajax请求的情况下通过javascript访问该数组

我能想出的唯一办法是

   +---------+     +-----------------------------+  +--------------------------------------+
   |Php array|     | write in Dom make it hidden |  | Parse the hidden element by DOM API  |
   +---------+     +-----------------------------+  +--------------------------------------+ 

但是这看起来一点也不优雅,有没有更好的方法呢?

查询数据库,并将结果作为JavaScript打印在脚本标记中。现在,所有数据都存储在本地JavaScript变量中,您可以随意使用这些变量

<script type="text/javascript">

  products = [];

  <?php
  mysql_connect('host', 'username', 'password');
  mysql_select_db('dbname');    

  $sql = "SELECT productName from products WHERE productTYPE = 1";
  $result = mysql_query($sql);
  while ($row = mysql_fetch_array($result)) {

    echo "products.push('" . addslashes($row['productName']) . "'); \n";

  }

  ?>

  //do something with all the stuff in the products array
  alert("There are " + products.length + " products in the array.");

</script>

产品=[];

为什么不首先将mysql数据作为json对象传递给DOM?@PeterKirby这是我想要的答案,但我对此一无所知,我不知道如何做?我如何使用php生成JSON和Javascript中的可用内容我们为什么要做你的家庭作业?我希望这不是大学。。。花几千美元去上课,然后不去做学习材料的工作将是一种巨大的浪费(在学习编程时,弄清楚如何去做就是你学习的方式!)。这也是对每个在你简历上看到大学的人犯下的欺诈行为。如果这是家庭作业,你就是坏人。@DanGrossman对此表示抱歉。我应该努力学习,因为更好的学习者
但这看起来一点也不优雅,有更好的方法吗?
这不是“不优雅”-这实际上是做你想做的事情的非常常见的方法:)例如,我们用数据生成js文件。这就是制造商型号下拉列表在这里的工作方式(该页面是俄语的,请从页面顶部选择前2个下拉列表)。Js文件itsef是
firms_models.Js
(我们希望它能被用户的浏览器缓存,并从不执行ajax和SQL查询中获益)太棒了!我怎么会想不出这个解决方案,但在这种情况下,我不能使用外部javascript,而只能使用内联javascript让php完成这项工作。这里没有外部javascript。这与您编写所有其他javascript所用的文档相同。如果不在HTTP响应中打印数据(这个),或者不发出另一个请求(AJAX),就无法从PHP获取数据。如果你的老师想让你在第一个列表的基础上填充第二个列表,而不使用AJAX,这就是他/她想要的。顺便说一句,我可以利用json的使用吗?我的意思是让php生成json,让javascript将其作为一个对象。是的,你可以。它只涉及更改上面两行PHP代码。我将把它作为一个练习留给你,我将构建一个JSON对象——可以更紧凑,例如
var products=