8
votes

JSON POST INVOKING FONCTION ERREUR

J'ai cet appel Post JQuery qui appelle en quelque sorte la fonction d'erreur même s'il entre dans les données dans la base de données parfaitement bien. xxx pré>

- contrôleur p>

Request URL:http://localhost/Mail/ExternalMail/Create
Request Method:POST
Status Code:403 Forbidden
Request Headersview source
Accept:*/*
Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-GB,en-US;q=0.8,en;q=0.6
Authorization:Negotiate    TlRMTVNTUAADAAAAAAAAAEgAAAAAAAAASAAAAAAAAABIAAAAAAAAAEgAAAAAAAAASAAAAAAAAABIAAAABcKIogUBKAoAAAAP
Connection:keep-alive
Content-Length:113
Content-Type:application/json; charset=UTF-8
Cookie:ASP.NET_SessionId=tg1xrabaigumj3fxooa1satc
DNT:1
Host:localhost
Origin:http://localhost
Referer:http://localhost/Mail/externalmail/Create
User-Agent:Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.22 (KHTML, like Gecko)     Chrome/25.0.1364.172 Safari/537.22
X-Requested-With:XMLHttpRequest
Request Payload
{"CostCentreCode":"B125","Day":"20/03/2013","ExternalMailItemID":"4","ExternalMailLocationID":"1","Quantity":"2"}
Response Headersview source
Cache-Control:private, s-maxage=0
Content-Length:127
Content-Type:application/json; charset=utf-8
Date:Wed, 20 Mar 2013 01:31:21 GMT
Server:Microsoft-IIS/5.1
X-AspNet-Version:4.0.30319
X-AspNetMvc-Version:3.0
X-Powered-By:ASP.NET


12 commentaires

Si vous mettez un point d'arrêt sur Retour JSON ("une erreur survenue") , que se passe-t-il? Est-ce que c'est frappé?


Non, ça ne sait pas.


Avez-vous déjà frappé votre méthode de création?


Oui, il appuie sur la méthode Create et enregistre avec succès l'enregistrement et il n'y a pas d'exception jetée, mais d'une manière ou d'une autre, il invoque la fonction de rappel d'erreur.


@ user1490835 Utilisez-vous un serveur IIS local ou un serveur de développement Visual Studio?


J'utilise le serveur IIS local qui 5.1. Ce code travaillait en quelque sorte quelques mois plus tôt, mais je suis allé pour des vacances et quand je suis revenu, cette erreur a commencé à sauter. Si je copie ce même code dans une nouvelle application, cela fonctionne qui est bizarre.


Pouvez-vous poster une demande / réponse entière de Chrome Dev Outil?


@inser - J'ai inclus la source de page. Merci


J'ai mentionné la demande / réponse Ajax


@inser - J'ai inclus l'en-tête de réponse de la demande maintenant. Merci


Le type de données est défini sur JSON mais en réalité, vous passez une chaîne depuis que vous avez utilisé JSON.Stringify pour que cela soit passé comme JSON, vous devez envelopper toutes vos clés de votre méthode en guillemets


@ user1490835, s'il vous plaît partagez votre itinéraire ... Je pense que je vois où le 403 vient de


4 Réponses :


2
votes

Je pense que le problème est spécifiant jSONREQuestbehavior.allandget

et ensuite en affectation sur la méthode suivante: xxx

si la base de données est remplacée , nous savons que le code du référentiel tire. Le navigateur rapporte un site http403 qui sent le cadre de la structure lance une exception de sécurité, qu'il peut faire si elle s'attend à répondre à l'obtention et à la réception d'un poste.


1 commentaires

J'ai essayé de supprimer le jsonrequestbehavior.allandget mais le lancer d'erreur est toujours le même.



0
votes

La demande Ajax entrera dans le bloc d'erreur si vous spécifiez que le type de données est JSON, mais la réponse ne peut pas être analysée comme JSON.

Ouvrir Chrome et placez un point de rupture dans le bloc d'erreur et regardez la valeur des données. Placez le contenu dans un validateur JSON et vérifiez que votre réponse est valide JSON. p>

modifie également la méthode SIGS de vos fonctions de réussite et d'erreur sur P>

success: function(data, txtStatus, jqxhr){ // code here }
error: function( jqxhr, txtStatus, errorThrown) { // code here }


1 commentaires

signalant toujours les mêmes problèmes après avoir terminé toutes les étapes décrites ci-dessus.



0
votes

Essayez de changer votre méthode dans votre contrôleur d'un JSONRESULT à une actionResulte xxx


0 commentaires

0
votes

Comme Denas a dit, vous devez inspecter ce qui est dans les variables de TextStatus retournées et Errorthrown, car vous pouvez avoir une autre chose qu'un code HTTP renvoyé et que votre code est toujours exécuté simplement (ce qui est le cas puisque vous signalez vos dossiers. être ajouté à la base de données). Un code HTTP de 200 déclenchera la fonction "Success", et je ne peux pas me rappeler maintenant, mais quelque chose dans le 4xx ou 5xx doit déclencher la fonction "Erreur".

La principale chose à prendre en compte ici est que c'est qu'il est Le code de retour HTTP du serveur Web quels commandes quelle fonction est déclenchée dans l'appel JQuery Ajax

modifier votre code à: xxx

et dites-nous ce que vous avez dans ces variables TextStatus et Errorthrown.


0 commentaires