utilizzando jQuery $ .post () per la restituzione di valori multipli
Domanda
Sto cercando di utilizzare un $ .post () nel seguente modo:
$.post("file.php", { file_id: $(this).val()}, function(data){...}
Il file.php
poi fa una query di database e restituisce un array con un riferimento titolo, descrizione e immagine.
Quello che voglio fare è quindi in grado di aggiornare il .val()
per i campi modulo per ciascuno. Capisco come fare questo su una sola variabile, sarebbe solo il seguente:
$.post("file.php", { file_id: $(this).val()}, function(data){
$('#title').val(data);
}
Ma, come faccio ad ottenere i dati restituiti per essere riconoscibili in jQuery sia come variabili separate o come un array?
Grazie in anticipo
Soluzione
la documentazione per $ .post . Il quarto parametro è il tipo di dati. È possibile impostare questo per JSON per i dati di ritorno da analizzare in un oggetto JavaScript o un array.
$.post(
"file.php",
{ file_id: $(this).val() },
function(data){ $('#title').val(data.title); $('#para').val(data.paragraph); },
'json');
Nel file file.php, si può fare qualcosa di simile
<?php
$return_data=array('title'=>'Fishes Go To Market','paragraph'=>'Lots of stuff');
header('Content-Type: application/json');
echo json_encode($return_data);
exit();
Assicurati di includere l'intestazione () in modo jQuery conosce i dati dovrebbe essere JSON, e per l'uso json_encode per cui è formattato correttamente.
Vedere le json_encode documentazione per maggiori informazioni su questo, e il docs sull'intestazione . Ricordate, non si può avere qualsiasi altra uscita venire prima l'intestazione () e la stampa dei dati json_encoded, o l'intestazione e il JSON non sarà valido.
Altri suggerimenti
Il modo più semplice è quello di passare di nuovo i valori come JSON. Sarà necessario convertire il vostro array JSON sul server (ci sono un sacco di librerie lato server disponibili per questo ). E modificare il metodo di .post()
per restituire i dati come JSON con l'aggiunta di un quarto parametro, come:
$.post("file.php", { file_id: $(this).val()}, function(data) { ... }, "json");
È possibile quindi popolare le variabili facilmente come:
$('#title').val(data.title);
$('#description').val(data.description);