Llamada Ajax de sitios cruzados de Jquery con datos de éxito 302 no definidos con secuencia de comandos de tipo de datos; de lo contrario, devolverá un error

Estoy usando JQuery 1.7.2, tratando de hacer una solicitud Ajax entre sitios que debería devolver una página html a través de 4 redireccionamientos. No es mi mundo ideal con todas esas redirecciones, pero es parte de la especificación.

Ahora, usando el siguiente código:

$.ajax({
     type: "GET",
     url: myUrl,

     dataType: "script",
     success: function(data) {
      alert("success :"+ data);
     },
     error: function(jqXHR, textStatus, errorThrown) {
          alert("revoke: "+textStatus + ' / ' + errorThrown+"/"+jqXHR.status);
     },
     complete: function(jqXHR, textStatus){
         alert("complete : "+jqXHR.statusText + ": "+jqXHR.readyState);
     }
  });

Puedo ver en Firebug/Safari Developer Tools que todas las redirecciones funcionan (por ejemplo, devuelve un estado 302 con un encabezado de ubicación). Entonces sucede lo extraño: en la última página, que devuelve un estado 200, mi secuencia de comandos finaliza e intento ver los datos que regresan. Pero la salida es simplemente "Indefinida". Estoy de acuerdo en que no debería esperar un tipo de datos de secuencia de comandos cuando intento obtener una página html, pero cuando probé con todos los demás tipos de datos (como se define en el página jquery ajax), se activa el controlador de errores y el código de estado es 0. Mientras tanto, en Safari DT, el estado después de la primera redirección simplemente se establece como "(cancelado)" (mientras que la solicitud solo para la segunda página de redirección se cuelga en Firebug, pero supongo que tiene que ver con su implementación diferente).

Cuando recibo un estado 200, puedo ver en los depuradores que la última página tiene un tamaño de unos 18 kb, lo que significa que debería haber algún tipo de datos en ella.

¿qué hacer?

preguntado el 12 de junio de 12 a las 18:06

Bueno, ¿podrías publicar algún código? Mira esto: api.jquery.com/load -

302 es una redirección, por lo que tendrá la página a la que redirigir, a menos que no se encuentre -

@TrinhHoangNhu. No puedes redirigir con ajax... -

sí... ehh, tuve algunos problemas con mi navegador, ya sabes, de ida y vuelta, y no pensé que había publicado la pregunta. Lo siento por eso -

1 Respuestas

No puedes redirigir con AJAX, solo puede enviar y obtener datos hacia y desde el servidor.

Para una redirección, debe usar una solicitud HTTP "normal".

También se puede hacer con javascript window.location = myUrl

Respondido el 12 de junio de 12 a las 19:06

Sí, eso pensé, pero mirando las respuestas, parece que acepta los redireccionamientos y devuelve los datos válidos. - SeñoritaJorge

@MortenSkov. Esto es cierto, pero el navegador "ignora" la respuesta porque no es válida. - gdoron está apoyando a Monica

Está bien. Bueno, eso es un pequeño problema para mí, ya que necesito volver a la página original para trabajar con los datos. - SeñoritaJorge

@MortenSkov. Entonces no redirija desde el servidor, solo devuelva el HTML. "Cerrado como por diseño"... - gdoron está apoyando a Monica

si...estaba esperando una segunda opinion. Pero, como a nadie se le ocurrió uno, aceptaré el tuyo. Gracias por tu ayuda. - SeñoritaJorge

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.