Hola busqué las preguntas aquí, pero no pude encontrar nada. Soy nuevo al escribir PHP y jQuery, así que tengan paciencia conmigo.devolviendo JSON y HTML desde el script PHP
Lo que estoy tratando de hacer es enviar una solicitud ajax utilizando jQuery a mi script que ejecuta una consulta mysql en datos de mi base de datos y la serializa en el formato JSON usando json_encode de php. La respuesta se analiza con el script json2.js disponible. Todo esto funciona bien, pero también me gustaría devolver más datos que no sean solo JSON de este script.
sobre todo, me gustaría también eco de la línea siguiente antes del json_encode:
echo "<h1 style='margin-left: 25px;'>$num_rows Comments for $mysql_table</h1>";
sin embargo, mi jQuery está evaluando la respuesta completa durante el éxito del Ajax, por lo que la función JSON.parse fallan debido a la vuelta del script está en un formato inválido.
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 + '');
}
¿alguien sabe cómo puedo devolver la línea de HTML, así como la json_encode utilizar este script desde hace más de población de poco JSON?
gracias, este sitio web ha sido maravilloso al responder mis preguntas de novato.
mi 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;`
gracias por la respuesta, pero no estoy seguro de cómo implementarlo porque solo necesito repetir el html una vez en contraposición al ciclo for creado para los comentarios. ¿Puedes echarle un vistazo a mi código, añadirlo a la pregunta y señalarme en la dirección correcta? ¡Gracias! –
Si miras mi respuesta, puedes hacer lo mismo sin usar una matriz. Entonces 'echo json_encode ($ html);' y luego en la función de éxito, solo accederá a través de '$ data'. – anomareh
gracias! la matriz json_encode era justo lo que necesitaba. –