0

我正在做这个动画程序,我经常使用 ajax 脚本更新浏览器中的数据。稍微简化一下代码,这样你就会明白我想要做什么。首先,我有一个数组中动画中每个项目的 ID,我使用了一个 while 语句。在此期间,我将值保存到 javascript 变量并在 ajax 中使用它。由于更新,ajax 有一个定时间隔

稍后当我尝试在 Ajax 中输出变量时,只有数组的最后一个值将由 Ajax 处理,但我想要它们全部。

输出显示为蓝色二次容器,当悬停在正方形上时,我的项目的 id (trid) 将显示。

我不太擅长这个,所以我非常感谢答案:)

这是代码:

<?php   

$id1 = 0;       

while($rows = mysql_fetch_array($data)){        

    $id1 = $id1 + 1;    // + 1 for each row in array
    $TR_ID = $rows['trid']; // Ex Py 12938
?>

<div> 
    <script>                              
        var jid = '<?php echo $id1; ?>'; // + 1 for each row in array                   
        var id = '<?php echo $TR_ID; ?>';       // Contains id's like PY12938                       
    </script>
</div>

<!-- Container where output is shown -->            
<div class="hover" id="container" style="width:50px; height:50px; position:relative; background-color:blue;"> 

    <script>
        document.getElementById('container').id = id;
    </script>

    <span id="id_<?php echo $id1; ?>" style="position:absolute;"> <!--ID = id_xxxxx -->

    </span>

</div>


<script>

    setInterval("ajaxCall()",5000);
    function ajaxCall() 
    {

        $.ajax({
            type: "POST",       
            url: 'api.php',          
            data:  {id: id}, 
            dataType: 'json',               
            success: function(data)  
            {   
                var trid = data[0].trid; // Ex PY12938

                var hover = (trid); // Same 
                document.getElementById("id_<?php echo $id1 ?>").innerHTML = hover; // Sending ex PY12938 to div which is named "id_PY12938".

            }  
        });
    };  

</script>

<?php
}   
?>

这是用于 ajax 的 php(已更新):

<?php 
  $host = "localhost";
  $user = "root";
  $pass = "";

  $databaseName = "mydb";
  $tableName = "table1";
  $tableName2 = "table2";

$con = mysql_connect($host,$user,$pass);
$dbs = mysql_select_db($databaseName, $con);



$ID = @$_POST['id'];
$sqlCompareId = "(table1.trid = '".$ID."' AND table1.trid = table2.trid)";

$data = ("select * from table1, table2 where $sqlCompareId"); 

$result = mysql_query($data);
$dataArray = array();

while($array = mysql_fetch_assoc($result)){
    $dataArray[] = $array;
} 

echo json_encode($dataArray);


?>

如果我们说我现在的输出是彼此下方的 4 个方形 div,id 为 1、2、3、4。只有 id=4 的 div 会通过悬停显示它的trid

也许我不能同时运行多个 ajax?

不懂就问我!谢谢!

4

1 回答 1

0
    while($rows = mysql_fetch_array($data)){

//loop start.....
?>
    <script>
<?   
        setInterval("ajaxCall(<?php echo $id1 ?>)",5000);
<?
} // loop end here
?>
        function ajaxCall(idval) 
        {

            $.ajax({
                type: "POST",       
                url: 'api.php',          
                data:  {id: id}, 
                dataType: 'json',               
                success: function(data)  
                {   
                    var trid = data[0].trid; // Ex PY12938

                    var hover = (trid); // Same 
                    document.getElementById("id_"+idval).innerHTML = hover; // Sending ex PY12938 to div which is named "id_PY12938".

                }  
            });
        };  

    </script>

这段代码会帮助你。

而不是重复定义 ajax 函数只需重复调用 ajax 方法。

于 2013-10-29T11:09:37.087 回答