Ciao ho cercato tra le domande qui, ma non ho trovato nulla. Sono nuovo nello scrivere PHP e jQuery, quindi abbi pazienza con me.restituendo JSON e HTML dallo script PHP
Quello che sto cercando di fare è inviare una richiesta Ajax utilizzando jQuery al mio script che esegue una query mysql sui dati dal mio database e la serializza nel formato JSON utilizzando php json_encode. La risposta viene quindi analizzata con lo script json2.js disponibile. Tutto questo funziona bene, ma mi piacerebbe anche restituire più dati diversi da JSON solo da questo script.
principalmente, mi piacerebbe eco anche la seguente riga prima json_encode:
echo "<h1 style='margin-left: 25px;'>$num_rows Comments for $mysql_table</h1>";
tuttavia, il mio jQuery sta valutando l'intera risposta durante il successo ajax, rendendo la funzione JSON.parse sicuro a causa il ritorno dello script è in un formato non valido.
success: function(data) {
//retrieve comments to display on page by parsing them to a JSON object
var obj = JSON.parse(data);
//loop through all items in the JSON array
for (var x = 0; x < obj.length; x++) {
//Create a container for the new element
var div = $("<div>").addClass("bubble").appendTo("#comments");
//Add author name and comment to container
var blockquote = $("<blockquote>").appendTo(div);
$("<p>").text(obj[x].comment).appendTo(blockquote);
var cite = $("<cite>").appendTo(div);
$("<strong>").text(obj[x].name).appendTo(cite);
$("<i>").text(obj[x].datetime).appendTo(cite);
}
$("#db").attr("value", '' + initialComments + '');
}
Qualcuno sa come posso restituire la linea html così come la json_encode per utilizzare questo script per più di popolazione di poco JSON?
grazie, questo sito è stato meraviglioso nel rispondere alle mie domande noob.
mio php: `
for ($x = 0, $numrows = mysql_num_rows($result); $x < $numrows; $x++) {
$row = mysql_fetch_assoc($result);
$comments[$x] = array("name" => stripslashes($row["name"]), "comment" => stripslashes($row["comment"]), "datetime" => date("m/d/Y g:i A", strtotime($comment['datetime'])));
}
//echo "<h1 style='margin-left: 25px;'>$num_rows Comments for $mysql_table</h1>";
$response = json_encode($comments);
echo $response;`
grazie per la risposta, ma io non sono sicuro di come implementare, perché ho solo bisogno di eco il codice HTML una volta in contrasto con il ciclo for ho creato per i commenti. puoi dare un'occhiata al mio codice aggiunto alla domanda e indicarmi la giusta direzione? Grazie! –
Se dai un'occhiata alla mia risposta puoi fare la stessa cosa solo senza usare un array. Quindi "echo json_encode ($ html);" e poi nella funzione di successo si dovrebbe semplicemente accedervi tramite '$ dati'. – anomareh
grazie! l'array json_encode era proprio quello di cui avevo bisogno. –