JavaScript instead of "echo"


JavaScript instead of "echo"

这是我的表的一部分。但我使用"echo"的部分(根据我老板的说法)不是一个好的解决方案。我得用JavaScript来做。我不太明白"echo"有什么问题,有人能解释一下吗?我如何使用JS代替"echo"?

<td>Projekt: </td>
    <td><select name="Projekt">
         <?php 
         $result = mysql_query("select name from project");   
         while($row = mysql_fetch_array($result))
          {
             echo '<option value="" selected> </option>';
             echo '<option value="' .$row['name'] .'">'.$row['name'].'</option>';
          }
         ?>
         </select>       
  </td> 

我注意到你的代码中有一些基本的设计缺陷,这些缺陷可能与你的老板要求你做的事情有关。

你真的不应该在你的模板php文件中有数据库查询代码,与你的html代码混在一起。为了避免这种情况,如果您希望在服务器端呈现模板,则应该使用MVC或类似的方法。有像Silex或Symfony这样的框架和库可以帮助你完成大部分工作。

无论如何,为了用Javascript呈现这些选项,您需要首先解决将它们传输到用户浏览器的问题(正如其他用户已经评论的那样)。您可以使用jQuery轻松地进行AJAX调用(如果您搜索它,可以找到大量关于此的文档和教程),但假设您已经将它们存储在Javascript变量中,您可以编写如下内容(它使用jQuery):

<td>Projekt: </td>
<td>
  <select name="Projekt" id="projects">
    <option value="" selected> </option>
  </select>       
</td>
<script>
  // projects are stored in a variable named projects
  var select = $('#projects');
  projects.forEach(function(project) {
    select.append('<option value="'+project+'">'+project+'</option>');
  });
</script>

也有很多Javascript框架和库可以帮助你实现这种行为,让你使用模板、数据绑定和其他有用的东西,比如AngularJS、Backbone等。

编码快乐!

这是PHP,除了回显HTML标签之外,这段代码没有任何问题,这可能是他的意思。试试这个:

<td>Projekt: </td>
  <td><select name="Projekt">
       <option value="" selected="">
       <?php 
       $result = mysql_query("select name from project");   
       while($row = mysql_fetch_array($result)): ?>
       <option value="<?php echo $row['name'] ?>"><?php echo $row['name'] ?></option>
  <?php endwhile; ?>
       </select>       
</td> 

还要注意我是如何移动<option value="" selected="">的。如果它在while循环中,你会得到很多,我怀疑这不是你想要的:)