Ajax查询sql并发送单行响应

时间:2011-08-17 11:23:00

标签: php mysql ajax loops

我认为我正在做一个经典的ajax脚本,对于使用它的人来说应该相当容易。

好的想法是从jquery ajax调用一个页面来计算和循环一些数据。我希望页面在计算出1行时回复javascript。然后jquery应该为行填充div行。这意味着它不应该等待所有行完成,而是一次只占一行。

有意义吗?这个问题应该是众所周知的,但对于我的不好解释感到抱歉。到目前为止我的代码:

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 个答案:

答案 0 :(得分:1)

执行此操作的唯一方法是对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()返回的相应行数;

显然,您需要清理输入并优化代码,但这应该是一般的想法。