Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

597
Vistas
La solicitud jQuery $ .ajax de dataType json no recuperará datos del script PHP

He estado buscando la solución por todas partes, pero no puedo encontrar nada que funcione. Estoy tratando de obtener un montón de datos de la base de datos y luego a través de los campos de entrada de autocompletar de AJAX en un formulario. Para ello he decidido utilizar json, porque ¿por qué no, verdad? Alternativamente, he estado pensando en enviar una cadena delimitada y luego tokenizarla, lo que en retrospectiva hubiera sido mucho más fácil y me hubiera ahorrado el dolor de cabeza... Sin embargo, como decidí usar json, supongo que debe seguir con él y averiguar lo que salió mal! Lo que sucede es que cuando se ejecuta get_member_function(), aparece un error en un diálogo de alerta y dice "[objeto Objeto]". Intenté esto también usando la solicitud GET y configurando contentType en ”application/json; juego de caracteres=utf-8″. Por desgracia, no hay dados. ¿Alguien puede sugerir qué estoy haciendo mal? Cuídate, Piotr.

Mi función javascript/jQuery es la siguiente:

 function get_member_info() { var url = "contents/php_scripts/admin_scripts.php"; var id = $( "select[ name = member ] option:selected" ).val(); $.ajax( { type: "POST", dataType: "json", url: url, data: { get_member: id }, success: function( response ) { $( "input[ name = type ]:eq( " + response.type + " )" ).attr( "checked", "checked" ); $( "input[ name = name ]" ).val( response.name ); $( "input[ name = fname ]" ).val( response.fname ); $( "input[ name = lname ]" ).val( response.lname ); $( "input[ name = email ]" ).val( response.email ); $( "input[ name = phone ]" ).val( response.phone ); $( "input[ name = website ]" ).val( response.website ); $( "#admin_member_img" ).attr( "src", "images/member_images/" + response.image ); }, error: function( error ) { alert( error ); } } ); }

y el código relevante en "contents/php_scripts/admin_scripts.php" es el siguiente:

 if( isset( $_POST[ "get_member" ] ) ) { $member_id = $_POST[ "get_member" ]; $query = "select * from members where id = '$member_id'"; $result = mysql_query( $query ); $row = mysql_fetch_array( $result ); $type = $row[ "type" ]; $name = $row[ "name" ]; $fname = $row[ "fname" ]; $lname = $row[ "lname" ]; $email = $row[ "email" ]; $phone = $row[ "phone" ]; $website = $row[ "website" ]; $image = $row[ "image" ]; $json_arr = array( "type" => $type, "name" => $name, "fname" => $fname, "lname" => $lname, "email" => $email, "phone" => $phone, "website" => $website, "image" => $image ); echo json_encode( $json_arr ); }
over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Creo que conozco a este...

Intenta enviar tu JSON como JSON usando la función header() de PHP:

 /** * Send as JSON */ header("Content-Type: application/json", true);

Aunque está pasando JSON válido, $.ajax de jQuery no lo cree porque le falta el encabezado.

jQuery solía estar bien sin el encabezado, pero se cambió algunas versiones atrás.

ADEMÁS

Asegúrese de que su secuencia de comandos devuelva JSON válido. Use Firebug o las herramientas para desarrolladores de Google Chrome para verificar la respuesta de la solicitud en la consola.

ACTUALIZAR

También querrá actualizar su código para desinfectar el $_POST para evitar ataques de inyección de sql. Además de proporcionar algunos errores de captura.

 if (isset($_POST['get_member'])) { $member_id = mysql_real_escape_string ($_POST["get_member"]); $query = "SELECT * FROM `members` WHERE `id` = '" . $member_id . "';"; if ($result = mysql_query( $query )) { $row = mysql_fetch_array($result); $type = $row['type']; $name = $row['name']; $fname = $row['fname']; $lname = $row['lname']; $email = $row['email']; $phone = $row['phone']; $website = $row['website']; $image = $row['image']; /* JSON Row */ $json = array( "type" => $type, "name" => $name, "fname" => $fname, "lname" => $lname, "email" => $email, "phone" => $phone, "website" => $website, "image" => $image ); } else { /* Your Query Failed, use mysql_error to report why */ $json = array('error' => 'MySQL Query Error'); } /* Send as JSON */ header("Content-Type: application/json", true); /* Return JSON */ echo json_encode($json); /* Stop Execution */ exit; }
over 4 years ago · Santiago Trujillo Denunciar

0

Intente usar jQuery.parseJSON cuando recupere los datos.

 type: "POST", dataType: "json", url: url, data: { get_member: id }, success: function(data) { response = jQuery.parseJSON(data); $("input[ name = type ]:eq(" + response.type + " )") .attr("checked", "checked"); $("input[ name = name ]").val( response.name); $("input[ name = fname ]").val( response.fname); $("input[ name = lname ]").val( response.lname); $("input[ name = email ]").val( response.email); $("input[ name = phone ]").val( response.phone); $("input[ name = website ]").val( response.website); $("#admin_member_img") .attr("src", "images/member_images/" + response.image); }, error: function(error) { alert(error); }
over 4 years ago · Santiago Trujillo Denunciar

0

La función de error $.ajax toma tres argumentos, no uno:

 error: function(xhr, status, thrown)

Debe volcar los parámetros 2 y 3 para encontrar su causa, no la primera.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda