Ver Mensaje Individual
  #9 (permalink)  
Antiguo 21/01/2010, 11:38
Joaquin2111
 
Fecha de Ingreso: diciembre-2009
Mensajes: 40
Antigüedad: 14 años, 11 meses
Puntos: 0
Respuesta: Problema funcion $.ajax() en jquery 1.4

A ver, estoy mirando la web de www.json.org porqué podría ser que fuera un problema de construcción de la cadena que le estoy devolviendo. Ya que el error que me muestra el código que ha posteado "mayid", me devuelve un "parseerror, 200".

He separado todo el código para mostraros lo básico que hace la web.

Mi código web es el siguiente:
Código HTML:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  2.     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml" lang="es" xml:lang="es">
  4.     <title>Prueba contacto</title>
  5.     <base href="http://servidor/" />
  6.     <link rel="stylesheet" rev="stylesheet" href="css/styles.css" type="text/css" />
  7.     <!--<script type="text/javascript" src="js/jquery-1.4.min.js"></script>-->
  8.     <!--<script type="text/javascript" src="js/jquery-1.3.2.min.js"></script>-->
  9.     <script type="text/javascript" src="js/jquery-1.4.min.js"></script>
  10.     <script type="text/javascript">
  11.     //<![CDATA[
  12.         $(document).ready(function(){
  13.             $('#form_contacto').submit(function(e) {register();e.preventDefault();});
  14.         });
  15.         /*
  16.         function register(){
  17.             hideshow('loading',1);
  18.             error(0);
  19.             $.ajax({type:"POST",url:"pagina/act_contacto_prueba/1",data: $('#form_contacto').serialize(),dataType:"json", success: function(msg){alert("llega");
  20.                 //if(parseInt(msg.status)==1){window.location=msg.txt;}else if(parseInt(msg.status)==0){error(1,msg.txt);}
  21.                 //hideshow('loading',0);
  22.             }});
  23.         }*/
  24.         function register(){
  25.             hideshow('loading',1);
  26.             error(0);
  27.             $.ajax({type:"POST",url:"pagina/act_contacto_prueba/1",data: $('#form_contacto').serialize(),dataType:"json", contentType: "application/json",
  28.                 beforeSend: function(x){ alert("antes")},
  29.                 success: function(msg){alert( "success: "+msg) },
  30.                 error: function(a, p){ alert("error: "+p)
  31.                 //if(parseInt(msg.status)==1){window.location=msg.txt;}else if(parseInt(msg.status)==0){error(1,msg.txt);}
  32.                 //hideshow('loading',0);
  33.             }});
  34.         }
  35.         function hideshow(el,act){
  36.             if(act) $('#'+el).css('visibility','visible');
  37.             else $('#'+el).css('visibility','hidden');
  38.         }
  39.         function error(act,txt){
  40.             hideshow('error',act);
  41.             if(txt) $('#error').html('<p class="error_form">'+txt+'<\/p>');
  42.         }
  43.     //]]>
  44.     </script>
  45. </head>
  46. <form name="form_contacto" id="form_contacto" action="pagina/act_contacto_prueba" method="post">
  47.     <label for="nombre">Nombre:</label><input type="text" name="nombre" id="nombre"  tabindex="10"/><br /><br class="medialinea" />
  48.     <label for="email">E-mail:</label><input type="text" name="email" id="email"  tabindex="11"/><br /><br class="medialinea" />
  49.     <label for="telefono">Tel&eacute;fono:</label><input type="text" name="telefono" id="telefono"  tabindex="12"/><br /><br class="medialinea" />
  50.     <label for="consulta">Consulta:</label><textarea name="consulta" id="consulta" rows="3" cols="65" tabindex="14"></textarea>
  51.     <?php if(isset($_GET["var3"])){?>
  52.         <p class="error_form">
  53.             <?php if($_GET["var3"] == 1){?>Los campos marcados con * son obligatorios.
  54.             <?php }elseif($_GET["var3"] == 2){?>Debe introducir un e-mail valido.
  55.             <?php }elseif($_GET["var3"] == 3){?>Debe seleccionar el departamento al que dirige su consulta.
  56.             <?php }elseif($_GET["var3"] == 4){?>La pregunta de seguridad no se ha contestado correctamente.
  57.             <?php }?>
  58.         </p>
  59.     <?php }else{?>
  60.         <div id="error"><p class="error_form">Los campos marcados con * son obligatorios.</p></div>
  61.     <?php }?>
  62.     <input class="boton" type="submit" name="enviar" id="enviar" value="Enviar&nbsp;&nbsp;" tabindex="16" style="margin-right:6px;"/><img id="loading" src="img/ajax.gif" alt="enviando..." />
  63. </form>
Uso urls amigables, por eso los enlaces son así. Se seguro que pasa por el php al que estoy llamando, porque si desactivo javascript, tengo hecho el php de forma que me devuelva a la web en la que estoy mostrandome un error.
Lo que devuelvo en el php es lo siguiente:
Código PHP:
Ver original
  1. die("{status:0,txt:\"Los campos marcados con * son obligatorios.\"}");

Si alguien lo prueba y me sabe decir que es lo que está petando me hará un gran favor.

RESPUESTA:
Mientras escribia el post y lo enviaba (que solo he tardado 1 hora entre interrupciones y mas historias), he encontrado la solución.
El problema está en que el mensaje que le devolvía no era un mensaje json bien escrito.
Así que
Código PHP:
Ver original
  1. die("{status:0,txt:\"Los campos marcados con * son obligatorios.\"}");
funciona con jquery 1.3.2 pero no con jquery 1.4
El mensaje que devuelvo ahora es:
Código PHP:
Ver original
  1. die('{"status":"0","txt":"Los campos marcados con * son obligatorios."}');

SOLUCIONADO