2011-08-17 13 views
1

私はそれと一緒に作業している人々のためにかなり簡単にする必要がある古典的なajaxスクリプトをやっていると思う。AjaxクエリSQLと単一行の応答を送信

いいえ、考えてみましょう。データを計算してループするjquery ajaxからページを呼び出すことです。計算された行が1つあるときはいつでも、ページがJavaScriptに応答するようにしたい。 jqueryは、行のdiv行に値を設定します。つまり、すべての行が完了するのを待つべきではなく、一度に1つの行だけを取ります。

意味がありますか?問題はよく知られているはずですが、私の悪い説明には申し訳ありません。これまでの私のコード:

jQueryのページ:

$(document).ready(function() { 
    loadCityFriends(); 
}); 

function loadCityFriends() { 
    $.ajax({ 
     url: 'cityfriends.php', 
     success: function(data) { 
      $("#cityfriends").append(data); 
     } 
    }); 
} 

とcityfriends.php(ページ算出):

foreach bla bla bla 
print '{"fbid": "'.$friend["id"].'", "img": "'.$friend["picture"].'"}'; 

私のコードの待ち時間がcityfriends.phpまでループ行われ、その後、移入されていますdiv。

答えて

1

これを実行する唯一の方法は、PHPスクリプトへの複数の独立した呼び出しを作成し、最初に行の数を要求し、その後に各行を順次要求することです。 PHPは実行が終了する前に戻りませんので、1つのajax呼び出しでは、計算後に返されたすべての行、または最初の行だけが表示されます。

このような何かがうまくいく:

function getRows() 
{ 
    $query = mysql_query("SELECT * FROM `foo`"); 
    echo json_encode(array ("num_rows" => mysql_num_rows())); 
} 

function returnRow() 
{ 
    $row_id = $_POST["row_id"]; 
    $query = mysql_query("SELECT * FROM `foo` WHERE `id`=".$row_id); 
    $row = mysql_fetch_array($query); 

    echo json_encode(array ("row" => $row)); 
} 

は次にポーリング最初ポーリングGETROWSのAJAX()を使用して

PHP returnRow GETROWSによって返される行の適切な数()。

明らかに、入力をサニタイズしてコードを最適化する必要がありますが、それは一般的な考えです。

関連する問題