type success por formulario example error enviar ejemplos javascript jquery

success - enviar formulario por ajax javascript



jQuery Ajax: cómo obtener datos de respuesta por error (3)

Tengo una aplicación web simple. Creé la API REST del servidor para que devuelva una respuesta con código HTTP y un objeto JSON (o XML) con más detalles: código de la aplicación (específico para el escenario, mensaje que describe lo que sucedió, etc.).

Entonces, por ejemplo, si un cliente envía una solicitud de Registro y la contraseña es demasiado corta, el código HTTP de respuesta será 400 (Solicitud incorrecta) y los datos de respuesta serán: {appCode : 1020 , message : "Password is too short"} .

En jQuery estoy usando la función "ajax" para crear una solicitud POST. Cuando el servidor devuelve algo diferente del código HTTP 200 (OK), jQuery lo define como "error".

El controlador de errores puede obtener 3 parámetros: jqXHR, textStatus, errorThrown. ¿Puedo obtener el objeto JSON enviado por el servidor en caso de error?

Editar:

1) Aquí está mi código JS:

function register (userName, password) { var postData = {}; postData["userName"] = userName; postData["password"] = password; $.ajax ({ dataType: "json", type: "POST", url: "<server>/rest/register", data: postData, success: function(data) { showResultSucceed(data); hideWaitingDone(); }, error: function (jqXHR, textStatus, errorThrown) { showResultFailed(jqXHR.responseText); hideWaitingFail(); } }) }

2) Al mirar la consola Firebug, parece que la respuesta está vacía. Al invocar la misma solicitud utilizando la herramienta de prueba REST, obtengo una respuesta con el objeto JSON.

¿Qué estoy haciendo mal?


Aquí hay un ejemplo de cómo obtener datos JSON en caso de error:

$.ajax({ url: ''/path/to/script.php'', data: {''my'':''data''}, type: ''POST'' }).fail(function($xhr) { var data = $xhr.responseJSON; console.log(data); });

De los documentos :

Si se especifica json, la respuesta se analiza utilizando jQuery.parseJSON antes de pasarse, como un objeto, al controlador de éxito. El objeto JSON analizado está disponible a través de la propiedad responseJSON del objeto jqXHR.

De lo contrario, si responseJSON no está disponible, puede probar $.parseJSON($xhr.responseText) .


Después de pasar tanto tiempo en este problema, encontré el problema.

La página está debajo de la URL: www.mydomain.com/register
La API REST se encuentra debajo de la URL: server.mydomain.com/rest

Parece que este tipo de POST no es tan simple.
Voy a buscar más información para entender mejor este problema (si tiene más información, por favor, compártalo conmigo).

Al poner la API REST en www.mydomain.com/rest, todo funciona bien.


directamente de los documentos

El objeto jQuery XMLHttpRequest (jqXHR) devuelto por $ .ajax () a partir de jQuery 1.5 es un superconjunto del objeto XMLHttpRequest nativo del navegador. Por ejemplo, contiene las propiedades responseText y responseXML, así como un getResponseHeader ()

entonces usa el argumento jqXRH y obtén la propiedad responseText .

En el enlace de arriba, busque la sección titulada

El objeto jqXHR