2011-08-17 4 views
1

나는 그것을 작업 한 사람들에게 상당히 쉬운 고전 아약스 스크립트를 작성하고 있다고 생각합니다.Ajax 쿼리 sql 및 단일 행 응답을 보내십시오.

좋아요. 아이디어는 jquery ajax에서 일부 데이터를 계산하고 반복하는 페이지를 호출하는 것입니다. 내가 계산 한 행이있을 때마다 자바 스크립트에 응답하는 페이지를 원한다. 그런 다음 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

이렇게하는 유일한 방법은 PHP 스크립트를 여러 번 호출하여 처음에는 행 수를 요청한 다음 나중에 각 행을 순차적으로 요청하는 것입니다. PHP는 실행이 끝나기 전에 반환되지 않으므로 하나의 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에 아약스()를 사용하고

PHP returnRow getRows에 의해 반환 된 행의 적절한 수의();

분명히 입력을 살균하고 코드를 최적화해야하지만 이는 일반적인 아이디어 여야합니다.

관련 문제