0

这是我的 php/html 页面标签中添加的 javascript 代码:

<script type="text/javascript">

    $(document).ready(function() {  

        $('#status').change(function(){

           var status = $('#status').val();                  
           var html = ''; //string variable for html code for fields 

           if( status=="closed"){

               html += '<th>Close By :</th><td align="left"><select name="close_by">'+<?php $user=mysql_query("SELECT * FROM user");
                        while($data=mysql_fetch_array($user)){?>+'<option value="'+<?php echo $data['username'] ?>+'">'+<?php echo $data['username']; ?>+'</option>'+<?php } ?>+'</select></td>'; 
            }

            $('#close_by').html(html);
        });
    }); 
</script>

代码就是为此,如果 Status=="closed" 那么将出现一个选择标签,并且将使用 mysql 函数从数据库中获取选项值。但它不起作用。请帮忙解决这个问题。

提前致谢。

4

3 回答 3

1

你不能。PHP/MySQL 驻留在您的服务器上,而 JS 在浏览器中执行。

当然你可以让浏览器通过适当的HTTP 请求与你的服务器交互,在你的服务器上设置正确的路由之后。

于 2013-02-14T10:28:34.233 回答
0

您可以将 PHP 混合到 Javascript 中。PHP 将在服务器上执行,然后在客户端上执行 JS。这很可怕,非常糟糕的做法,调试的噩梦。将它们分开并使用 jQuery ajax 加载数据要好得多。

或者使用 PHP 在 javascript 的开头将数据放入 JSON 对象,并使用 Javascript 进行处理,而不是使用 PHP 代码在 Javascript 中连接字符串。

但是在您的示例中,问题到底是什么?html变量的 PHP(在 HTML 源代码中)的最终结果是什么?我怀疑某处有括号或引号错误。

于 2013-02-14T10:36:52.053 回答
0

你可以用ajax来做

$(document).ready(function() {  

  $('#status').change(function(){

       var status = $('#status').val();                  

       if( status=="closed"){
          $.ajax({
                url: 'ajax.php?',//if you have parameters
                success:function (response) {
                    $('#close_by').html(response);
                }
            });          
       }
    });
}); 

然后为 ajax 请求 ajax.php 创建一个新的 php 文件

<th>Close By :</th>
<td align="left">
    <select name="close_by">
        <?php $user=mysql_query("SELECT * FROM user");
            while($data=mysql_fetch_array($user)){?>
                 <option value="<?php echo $data['username'] ?>"><?php echo $data['username']; ?>     
                 </option>
            <?php } ?>
    </select>
</td>
于 2013-02-14T10:37:52.423 回答