我无法实时更新数据

时间:2014-09-16 00:33:47

标签: javascript php jquery sql ajax

这是我的代码

<!DOCTYPE html>
<html>
<head>



<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>  
<meta charset=utf-8 />
<script type="text/javascript">
function repeatAjax(){
$.ajax({
          type: "POST",
          url: 'getdata.php',
          dataType: 'json',
          success: function(resp) {

                    $('#name').html(resp[0]);


          },
          complete: function() {
                setTimeout(repeatAjax,500); 
             }
        });
}
</script>
</head>
<body>
 <center>
                        <h1>List</h1>

            <div id="name" name="name"></div>  

</center>
</body>
</html>

并且此结果没有显示任何内容

http://s1.postimg.org/hd8p7ecoe/listdoctorshow.jpg

这是我的getdata.php

<?php
mysql_query("SET NAMEs UTF8"); 
    $objConnect = mysql_connect("localhost","root","") or die(mysql_error());
    mysql_query("SET NAMEs UTF8"); 
    $objDB = mysql_select_db("member");
    $strSQL = "    SELECT * FROM mem2 order by date limit 1,1";
    $objQuery = mysql_query($strSQL) or die (mysql_error());
    $intNumField = mysql_num_fields($objQuery);
    $result = array();
    $arrCol = array();


    while($obResult = mysql_fetch_array($objQuery))
    {

        for($i=0;$i<$intNumField;$i++)
        {
            $arrCol[mysql_field_name($objQuery,$i)] = $obResult[$i]; 
        }
        array_push($result,$arrCol);
    }


    $response = json_encode($result);
    echo json_encode($result);

mysql_close($objConnect);
?>

和这个结果

http://s17.postimg.org/75io9xg8d/showgetdata.jpg

我不知道我做错了什么

三江源

2 个答案:

答案 0 :(得分:1)

无需在PHP中使其变得更复杂:

$response = json_encode($result);
echo json_encode($result);

// this doesn't make sense

只需将它们循环并正常推入内部即可。

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

echo json_encode($result);
exit;

在你的JS中,首先循环响应:

success: function(response) {

    var results = '';
    $.each(response, function(index, element){
        // build the markup first, don't feed the response into .html() directly
        results += '<p>' + element.id1 + '</p>';
        results += '<p>' + element.name1 + '</p>';
        results += '<p>' + element.date + '</p>';
    });    

    $('#name').html(results); // after the markup is complete, then use this
},

注意:使用改进的扩展名mysqli或使用PDO。

答案 1 :(得分:0)

试试这个:

function repeatAjax(){
    $.ajax({
      type: "POST",
      url: 'getdata.php',
      dataType: 'json',
      success: function(resp) {
          $('#name').html(resp[0]);
      }
    });
}

setInterval(repeatAjax,500);

希望这有帮助。如果您还没有收到任何回复,请尝试控制台记录resp并查看您是否确实从您的php文件中获得了一些响应。