2011-01-18 13 views
11

JS:código de depuración Jquery función ajax

$.ajax({ 


     type: 'POST', 
     url: 'http://localhost/MyServiceDir/Service.asmx/Foo', 
     contentType: 'application/json; charset=utf-8', 
     data: jsonData, 
     success: function (msg) { 
      alert("good"); 
     }, 
     error: function (xhr, status) { 
       switch (status) { 
       case 404: 
        alert('File not found'); 
        break; 
       case 500: 
        alert('Server error'); 
        break; 
       case 0: 
        alert('Request aborted'); 
        break; 
       default: 
        alert('Unknown error ' + status); 
      } 
     } 
    }); 

me sale "error desconocido". ¿Cómo llego al fondo de esto? Me gustaría saber cuál es el error en realidad. ¡Gracias!

Respuesta

8

El parámetro "estado" sólo incluye por qué ha fallado - tiempo de espera, errores, etc ... Para obtener el código de estado es necesario comprobar el objeto respuesta: xhr.status

Ver http://www.w3.org/TR/XMLHttpRequest/#response para más detalles.

Si obtiene "500 Internal Server Error" que es todo lo que va a obtener de ajax. Deberá verificar la aplicación o los registros del servidor. Esto podría ser un error de sintaxis yo error de la biblioteca o algo más en esa línea.

4

Verificar xhr.status.

+0

da 500 (error de servidor) ... pero ¿hay alguna manera de obtener detalles más específicos? ¿o es más o menos como la información que obtendré de $ ajax? – sarsnake

+0

@gnomixa: puede obtener lo que envía el servidor. Mira 'xhr.responseText'. – SLaks

+0

@gnomixa, consulte: http://www.w3.org/TR/XMLHttpRequest/#response –

3

Trate de hacer esto en el caso onerror:

alert(xhr.statusText) 

EDIT:

creo que la mejor opción en este caso sería instalar el plugin Firebug en Firefox. Esto le permitirá ver las llamadas ajax (habilitar la pestaña "consola" para esto), las respuestas y los mensajes de error. Con suerte, podrá obtener la información que necesita de esta manera. Este ha sido siempre mi método de elección para depurar llamadas ajax

+0

gracias, pero eso también es demasiado genérico: "error interno del servidor". Estoy buscando algo más informativo, como "se pasó una cantidad incorrecta de argumentos" ... no estoy seguro de si es posible. – sarsnake

+0

Editado mi respuesta arriba ... FireBug puede ayudarlo – stephen776

+0

FireBug tiene errores de instalación. En realidad no se instalará en mi FF 8 – sarsnake