2012-06-09 13 views
6

Jak mogę przekazać dane z php z następnie wierszy z powrotem do ajax?Przekazywanie danych z php do ajax

PHP

$query = 'SELECT * FROM picture order by rand() LIMIT 10'; 
$result = mysql_query($query); 

while ($rec = mysql_fetch_array($result, MYSQL_ASSOC)) { 

$url[]=$rec['pic_location']; 
$name[]=$rec['name']; 
$age[]=$rec['age']; 
$gender[]=$rec['gender']; 


} 

echo json_encode($url); 
echo json_encode($name); 
echo json_encode($age); 
echo json_encode($gender); 

Ajax

$(".goButton").click(function() { 
    var dir = $(this).attr("id"); 
    var imId = $(".theImage").attr("id"); 

    $.ajax({ 
     url: "viewnew.php", 
     dataType: "json", 
     data: { 
     current_image: imId, 
     direction : dir 
     }, 
     success: function(ret){ 
      console.log(ret); 
      var arr = ret; 
      alert("first image url: " + arr[0][0] + ", second image url: " + arr[0][1]); // This code isnt working 
      alert("first image Name: " + arr[1][0] + ", second image name: " + arr[1][1]); 
      $(".theImage").attr("src", arr[0]); 
      if ('prev' == dir) { 
      imId ++; 
     } else { 
      imId --; 
     } 
     $("#theImage").attr("id", imId); 
     } 
    }); 

}); 
}); 
</script> 

Moje pytanie brzmi: w jaki sposób mogę wyświetlić wartości tutaj? Komunikat Alert daje mi "Nieokreślony"?

Odpowiedz

10

Możesz coś z tym zrobić.

PHP za

$query = 'SELECT * FROM picture order by rand() LIMIT 10'; 
$res = mysql_query($query); 

$pictures = array(); 
while ($row = mysql_fetch_array($res)) { 
    $picture = array(
    "pic_location" => $row['pic_location'], 
    "name"   => $row['name'], 
    "age"   => $row['age'], 
    "gender"  => $row['gender'] 
); 
    $pictures[] = $picture; 
} 

echo json_encode($pictures); 

JS

... 
$.ajax({ 
    ... 
    dataType: "json", 
    ... 
    success: function(pictures){ 
    $.each(pictures, function(idx, picture){ 
     // picture.pic_location 
     // picture.name 
     // picture.age 
     // picture.gender 
    }); 
    } 
}); 
... 
+0

Dziękuję :), Czy "echo json_encode ($ picture);" zwróci tylko pierwszy wiersz lub wszystkie 10 wierszy z bazy danych? Po prostu wypróbowałem to, jego echo tylko rzędu 1? – Yahoo

+0

Got It !! musiałem echo $ obrazka nie obrazek :) Dziękuję, twoja odpowiedź była doskonała – Yahoo

+0

Tak, miałem tam literówkę. – Alexander

2

nie można umieścić wiele echo wypowiedzi na odpowiedź AJAX:

echo json_encode($url); 
echo json_encode($name); 
echo json_encode($age); 
echo json_encode($gender); 

Dołącz do swoich tablic i wysłać jedną odpowiedź:

$arr = $url + $name + $age + $gender; 
echo json_encode($arr); 
2

Można łatwo to zrobić przy użyciu pojedynczej macierzy:

$pics = array(); 

while ($rec = mysql_fetch_array($result, MYSQL_ASSOC)) { 
    $pics[$rec['id']]['url'] = $rec['pic_location']; 
    $pics[$rec['id']]['name']=$rec['name']; 
    $pics[$rec['id']]['age']=$rec['age']; 
    $pics[$rec['id']]['gender']=$rec['gender']; 
} 

echo json_encode($pics); 
+0

widzę tylko jeden '$ pic' :) – Alexander

+0

@srinivasan - Dzięki, ale chciał wysłać całe 10 wierszy z bazy z powrotem? Myślę, że to po prostu wyśle ​​wiersz 1? Czy tak nie jest? – Yahoo

+0

@Alexander i Adi Mathur, poprawiłem błędy. Zobacz zaktualizowany kod. –

Powiązane problemy