如何将php-mysql数据与jquery合并以淡化数据


How to merge php-mysql data with jquery to fade data

我有一个使用php-mysql的简单select语句,我有这个脚本来用另一个脚本更改文本。

<script type="text/javascript">
    $(document).ready( function() {
       $('#deletesuccess').delay(500).fadeOut(function(){
          $('#deletesuccess').html("text2");
          $('#deletesuccess').delay(500).fadeIn("slow");
       });
    });
</script>
<div id=deletesuccess > text1 </div>

试图使用php-mysql和上面的jquery脚本显示表中的数据,但它只显示最后一行,循环不起作用

$getTextQ = "select * from text";
$getTextR = mysql_query($getTextQ);
while($row = mysql_fetch_array($getTextR)){
?>
        <script type="text/javascript">
     $(document).ready( function() {
    $('#deletesuccess').delay(500).fadeOut(function(){
         $('#deletesuccess').html("<?php echo $row['desc']; ?>");
          $('#deletesuccess').delay(500).fadeIn("slow");
    });
  });
</script>
<?php
   }

但是无法将它与上面的PHP代码一起使用来逐个显示数据。

您可以通过使用jQuery ajax轻松实现这一点。

<script type="text/javascript">
    $(document).ready( function() {
        $.ajax({
            url: 'getData.php',
            dataType: 'json',
            type: 'POST',
            success: function(data) {
                $('#deletesuccess').delay(500).fadeOut(function(){
                    $.each(data,function(key, value){
                        $('#deletesuccess').html(value);
                        $('#deletesuccess').delay(500).fadeIn("slow");
                    });
                });
            }
        });
    });
</script>

现在,在getData.php页面中,您需要进行查询并返回json_encode数据。这意味着getData.php文件应该包含以下代码:

<?php
    $getTextQ = "select * from text";
    $getTextR = mysql_query($getTextQ);
    $json     = '';
    while($row = mysql_fetch_array($getTextR)){
       $json .= $row['desc']; 
    }
    echo json_encode($json);
?>

注意,php和javascript代码执行之间没有明显的区别。php代码将对该javascript代码进行回显,在php完成执行(在文档准备好的情况下)后,javascript代码将在istant执行,因此javascript的最后一次回显将在执行中生效。试着把代码分开。

问题是每次运行循环时都会覆盖JavaScript。相反,你应该这样做:

<script type="text/javascript">
    var php_results = '';
</script>
<?php
$getTextQ = "select * from text";
$getTextR = mysql_query($getTextQ);
while($row = mysql_fetch_array($getTextR)){
?>
    <script type="text/javascript">
        php_results += "<?php echo $row['desc']; ?> | ";
    </script>
<?php
}
?>
<script type="text/javascript">
    $(document).ready( function() {
        $('#deletesuccess').delay(500).fadeOut(function(){
            $('#deletesuccess').html(php_results);
            $('#deletesuccess').delay(500).fadeIn("slow");
        });
    });
</script>

当然,这需要清理才能使其美观,但它应该起作用。我添加了管道作为数据库中不同描述之间的分隔符。