Mi scuso se questa spiegazione non è chiara, è difficile per me capire anche io. Come posso utilizzare PHP & Ajax per inviare un array a Javascript? Sto usando Ajax per ottenere una serie di foto, che sto cercando di aggiungere a un numero vuoto <div>
sulla mia pagina.Come passare un array usando PHP e Ajax in Javascript?
Il jQuery si presenta come segue:
$.ajax({
url: "<?php echo site_url('demo/getPhotos/'); ?>",
type: 'POST',
data: form_data,
success: function(data) {
alert(data);
}
E i getPhotos funzione PHP aspetto:
<?php
$photos = array();
foreach ($data as $photo) {
array_push($photos,$photo['source']);
}
// echo json_encode($photos); How should I be returning $photos?
Se ho semplicemente echo $photos;
i dati vengono inviati al callback successo, ma doesn' t sembra essere in un formato utilizzabile.
Se faccio un var_dump($photos)
in PHP, il risultato appare qualcosa di simile:
array(4) {
[0]=>
string(14) "some_image.jpg"
[1]=>
string(14) "some_image.jpg"
[2]=>
string(14) "some_image.jpg"
[3]=>
string(14) "some_image.jpg"
}
che ho provato varie combinazioni di json_encode
e simili, ma in realtà io sto indovinando e non sono sicuro della teoria dietro di esso. In questo contesto qual è il modo migliore per passare i dati da PHP a Javascript?
Perfetto, grazie. Vorresti approfondire il vantaggio di incapsulare meglio il codice? –
Certo, @Joe. Se vuoi solo restituire una lista di foto, quello che hai va bene. Ma, se in seguito decidi di voler restituire più informazioni su ogni foto, allora l'array associativo è utile perché porta ad un buon modo per accedere ai dati in JS. Un altro modo per farlo potrebbe essere quello di rendere ogni foto un array associativo e restituire una matrice di array associativi, ala: 'array (array (" name "=>" Photo1 "," file "=>" img1.jpg "), array ("name" => "Weekend at the Beach", "file" => "imgs/beachphoto.jpg")) '. – Richard
@Joe: Il vantaggio di fare quanto sopra è relativo a ciò che stai cercando di ottenere con il tuo codice. Se ti ritrovi a fare cose contorte dopo per recuperare i tuoi dati, ricorda che abbiamo avuto questa conversazione, e forse questo ti aiuterà :-) Questo ha chiarito le cose? – Richard