2012-06-09 32 views
6

Come posso passare i dati da un php di quindi righe a ajax?Passare i dati da php a 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> 

La mia domanda è come posso visualizzare i valori qui? Il messaggio di avviso mi sta dando "indefinito"?

risposta

10

Si può fare qualcosa in questo modo.

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

Grazie :), l'echo json_encode ($ picture); restituirà solo la prima riga o tutte le 10 righe del database? Ho appena provato, il suo eco solo la riga 1? – Yahoo

+0

Ottenuto iT !! dovuto echo $ foto non foto :) Grazie, la tua risposta è stata perfetta – Yahoo

+0

Sì, ho avuto un errore di battitura lì. – Alexander

2

Non si può mettere più echo istruzioni per la risposta AJAX:

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

Unitevi gli array e inviare una sola risposta:

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

si può facilmente fare questo usando un singolo array:

$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

posso vedere solo un '$ pic' :) – Alexander

+0

@srinivasan - Grazie, ma ho voluto trasmettere l'intero 10 righe di un database back? Penso che questo manderebbe solo la fila dei 1? Non è vero? – Yahoo

+0

@Alexander e Adi Mathur, ho corretto gli errori ora. Si prega di consultare il codice aggiornato. –

Problemi correlati