2012-06-09 17 views
6

Verileri bir php'den sonra satırlardan ajax'e nasıl aktarabilirim?Verileri php'den ajax'e geri aktarma

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> 

Sorum Burada değerleri görüntüleyebilir nasıl? Uyarı mesajı bana "Tanımsız" mı veriyor?

cevap

10

Bu satırlarda bir şeyler yapabilirsiniz.

PHP

$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

Thankyou :), echo json_encode ($ resim); 'sadece 1 satır veya 10 satır veritabanından geri dönüyor mu? Sadece denedim, sadece 1'in satırını yankılanıyor mu? – Yahoo

+0

iT var !! resim çekmek için resim çekmek gerekiyordu :) Teşekkür ederim, cevabınız mükemmeldi – Yahoo

+0

Evet, orada bir yazım hatası vardı. – Alexander

2

Sen AJAX yanıt için birden echo ifadeleri koyamazsınız:

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

senin dizileri katılın ve tek yanıt göndermek:

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

Kolayca tek Dizisi kullanarak yapabilirsiniz:

$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

Ben sadece bir '$ pic' :) – Alexander

+0

@srinivasan görebilirsiniz - Teşekkür, Ama geri veritabanının tüm 10 satır göndermek istedi? Sanırım bu sadece 1'in sırasını mı gönderecek? Öyle değil mi? – Yahoo

+0

@Alexander ve Adi Mathur, hataları şimdi düzelttim. Lütfen güncellenmiş kodlara bakın. –

İlgili konular