Ajax-запрос sql и отправка однорядных ответов - PullRequest
1 голос
/ 17 августа 2011

Я думаю, что я делаю классический ajax-скрипт, который должен быть довольно простым для людей, которые с ним работали.

Хорошо, идея в том, чтобы вызвать страницу из jquery ajax, которая вычисляет и перебирает некоторые данные. Я хочу, чтобы страница отвечала на javascript всякий раз, когда вычислялась 1 строка. Затем jquery должен заполнить строку div для строки. Это означает, что НЕ ДОЛЖНО ждать завершения всех строк, а просто брать по одной строке за раз.

Имеет ли это смысл? Проблема должна быть хорошо известна, но извините за мои плохие объяснения. Мой код пока:

Страница запроса:

$(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 Ответ

1 голос
/ 17 августа 2011

Единственный способ сделать это - сделать несколько независимых вызовов скрипта PHP, возможно, сначала запросив количество строк, а затем последовательно запросив каждую строку. PHP не вернется, пока не завершит выполнение, поэтому одним вызовом ajax вы будете просматривать либо все строки, возвращенные после вычисления, либо только первую.

Примерно так будет работать:

PHP

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));
}

Затем используйте ajax, чтобы сначала опросить getRows (), а затем опросить returnRow соответствующее количество строк, возвращаемых getRows ();

Очевидно, что вам нужно очистить входные данные и оптимизировать код, но это должно быть общей идеей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...