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

私がやろうとしているのは、このPHPファイルへのAjax呼び出しを使用してから、解析してdiv内に配置したい「エコーされた」データです。これがAjax呼び出しです。

$(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つずつ返したいのですが、どうすればよいでしょうか。

4

2 に答える 2

1

ここで探している関数はflushと呼ばれ、これによりWebサーバー(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();
}

また、非推奨の関数(mysql_*)を使用しているので、これらをPDOまたはMySQLiに置き換えることを検討する必要があります(これは私の投稿で行いました)。

注:一部のブラウザでは、コンテンツを表示する前に一定量のデータが必要です。

于 2013-03-11T17:24:06.390 に答える
1

別のアプローチをとってはどうですか...

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

}

echo json_encode($search);

成功コールバック関数では、jQuery each()を使用してバスケット要素のjson_encoded配列を反復処理するだけです。

json配列jqueryをループします

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

于 2013-03-11T17:28:02.570 に答える