2011-01-18 4 views
11

Code JS:Debugging Jquery ajax fonction

$.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); 
      } 
     } 
    }); 

je reçois "erreur d'erreur inconnue". Comment puis-je aller au fond de tout cela? Je voudrais savoir quelle est l'erreur. Merci!

Répondre

8

Le paramètre « état » ne comprend que la raison pour laquelle il a échoué - délai d'attente, erreur, etc ... Pour obtenir le code d'état, vous devez vérifier l'objet de réponse: xhr.status

Voir http://www.w3.org/TR/XMLHttpRequest/#response pour plus de détails.

Si vous obtenez "500 Erreur interne du serveur" que est tout ce que vous obtiendrez d'ajax. Vous devrez vérifier votre application ou les journaux du serveur. Cela pourrait être une erreur de syntaxe ou une erreur de bibliothèque ou autre chose dans ce sens.

4

Vérifiez xhr.status.

+0

cela donne 500 (erreur de serveur) ... mais y at-il un moyen d'obtenir plus de détails spécifiques? ou est-ce à peu près autant que l'information que je vais obtenir de $ ajax? – sarsnake

+0

@gnomixa: Vous pouvez obtenir tout ce que le serveur envoie. Regardez 'xhr.responseText'. – SLaks

+0

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

3

Essayez ceci en cas onerror:

alert(xhr.statusText) 

EDIT:

Je pense que votre meilleur pari serait ici pour installer le plugin Firebug sur Firefox. Cela vous permettra de voir les appels ajax (activez l'onglet "console" pour cela), les réponses et les messages d'erreur. J'espère que vous serez en mesure d'obtenir l'information dont vous avez besoin de cette manière. Cela a toujours été ma méthode de choix pour déboguer des appels ajax

+0

merci, mais c'est trop générique aussi - "erreur interne du serveur". Je suis à la recherche de quelque chose de plus informatif comme "mauvais nombre d'arguments passés" ... pas sûr si c'est possible. – sarsnake

+0

Édité ma réponse ci-dessus ... FireBug peut vous aider – stephen776

+0

FireBug est bogué à installer. En fait, il ne sera pas installé sur mon FF 8 – sarsnake