2013-03-11 74 views
0
$res = mysql_query("SELECT * FROM `basket` WHERE `account_id` = '$_SESSION[ID]'"); 
while($row = mysql_fetch_assoc($res)) { 
     $search = $row['number']; 
     echo $search; 
} 

什么我试图做的是使用Ajax调用这个PHP文件中,然后将“遥相呼应”的数据我想分析和地方一个div里面,这里的Ajax调用返回的foreach响应

$(document).ready(function() { 
    var data = "func=basket";    
    $.ajax({ 
     url: "functions/ajax.php", 
     data: data, 
     type: "GET", 
     success: function(data, textStatus, jqXHR){ 
      $("#response").html(data); 
     }, 
     error: function (jqXHR, textStatus, errorThrown){ 
      console.log('Error ' + jqXHR); 
     } 
    }); 
}); 

但我遇到的问题是,直到每个while($row etc..处理它不解析数据,我想通过1到回波第1行中,我如何去这样做

+1

可能重复的[jQuery的ajax,阅读流增量?](http://stackoverflow.com/questions/7740646/jquery-ajax-read-the-stream-incrementally) – 2013-03-11 17:19:45

+0

有点像'yield'会是在这里完美;) - 但你可以使用[flush](http://php.net/flush)。我会回答。 – 2013-03-11 17:20:27

+0

你在这里使用'mysql_query'的任何原因? – tadman 2013-03-11 17:23:20

回答

1

如何采取了不同的方法......

while($row = mysql_fetch_assoc($res)) { 
    $search[] = $row['number']; 

}

echo json_encode($search); 

在你成功的回调函数,你只需通过使用jQuery的每一个()你的篮子要素的json_encoded阵列迭代

loop through json array jquery

http://api.jquery.com/jQuery.each/

1

功能你'在这里寻找被称为flush,这将允许你冲洗wr你的web服务器的ite缓冲区(Apache,Nginx等)。

$pdo = new PDO('mysql:dbname=yourdb;host=127.0.0.1', 'root', ''); 
$sth = $pdo->prepare('SELECT * FROM `basket` WHERE `account_id`=?'); 
$sth->bindParam(1, $_SESSION['id'], PDO::PARAM_INT); 
$sth->execute(); 

while($row = $sth->fetch(PDO::FETCH_ASSOC)) 
{ 
    echo $row['number']; 
    flush(); 
} 

您还使用您应该考虑PDO或库MySQLi更换这些废弃的函数(mysql_*)(我在我的岗位做这个给你)。

注意:某些浏览器在显示内容之前需要一定数量的数据。

+0

我已更新我的帖子以使用PDO。 – 2013-03-11 17:35:02

+0

非常感谢您的回复,尽管PDO不是我的使用方式,我坚持使用mySQLi;),我只在mySQL中发布了简单查看 – 2013-03-11 17:40:34