Disculpas si esta explicación no está clara, es difícil de entender para mí también. ¿Cómo puedo usar PHP & Ajax para enviar una matriz a Javascript? Estoy usando Ajax para obtener una matriz de fotos, que luego estoy buscando agregar a un <div>
vacío en mi página.¿Cómo pasar una matriz usando PHP y Ajax a Javascript?
El jQuery se ve de la siguiente manera:
$.ajax({
url: "<?php echo site_url('demo/getPhotos/'); ?>",
type: 'POST',
data: form_data,
success: function(data) {
alert(data);
}
Y los getPhotos función de PHP se ve así:
<?php
$photos = array();
foreach ($data as $photo) {
array_push($photos,$photo['source']);
}
// echo json_encode($photos); How should I be returning $photos?
Si simplemente echo $photos;
los datos se envían a la devolución de llamada de éxito, pero que doesn' parece estar en un formato utilizable.
Si hago un var_dump($photos)
en PHP, el resultado es algo así como:
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"
}
que he probado varias combinaciones de json_encode
y similares, pero realmente estoy adivinando y no está seguro de la teoría detrás de él. ¿Cuál es la mejor manera de pasar datos de PHP a Javascript en este contexto?
Perfecto, gracias. ¿Te importaría explicar la ventaja de encapsular mejor el código? –
Claro, @Joe. Si solo quieres devolver una lista de fotos, lo que tienes está bien. Pero, si más adelante decide que desea devolver más información sobre cada foto, la matriz asociativa es útil porque permite acceder fácilmente a los datos en JS. Otra forma de hacerlo podría ser hacer que cada foto sea una matriz asociativa y devolver una matriz de matrices asociativas, ala: 'array (array (" name "=>" Photo1 "," file "=>" img1.jpg "), array ("nombre" => "Fin de semana en la playa", "archivo" => "imgs/beachphoto.jpg")) '. – Richard
@Joe: la ventaja de hacer lo anterior es relativa a lo que intenta lograr con su código. Si te encuentras haciendo cosas intrincadas más tarde para recuperar tus datos, recuerda que tuvimos esta conversación, y quizás esto te ayude :-) ¿Eso esclareció las cosas? – Richard