Des problèmes avec ASP.net JSON Webservice type de réponse
Je suis tentative d'écriture d'une ASP.net service web qui va être utilisé par un appel AJAX jQuery.
Je suis tout à fait à mon wit's end à essayer d'obtenir ce travail. J'ai vu un certain nombre de questions similaires en ligne, mais je n'ai pas été en mesure de trouver une solution adaptée.
Lorsque je tente de faire de l'appel ajax (via jquery), je reçois une réponse positive à partir du serveur, mais la demande échoue en raison d'une erreur de l'analyseur.
J'ai validé le json renvoyé par le webservice et il est valide. Le problème semble provenir du fait que asp.net retourne l'objet json en xml.
J'ai spécifié le type de retour json à l'aide de
<Script.Services.ScriptMethod(responseFormat:=Script.Services.ResponseFormat.Json)> _
J'ai ajouté la suivante http gestionnaire comme il a été mentionné comme une solution potentielle
<httpHandlers>
<remove verb="*" path="*.asmx"/>
<add verb="*" path="*.asmx" type="System.Web.Script.Services.ScriptHandlerFactory" validate="false"/>
</httpHandlers>
Le Type de contenu est "application/json; charset=utf-8" et le type de données "json" dans mon jquery ajax d'installation. Le type de la demande semble être correct, mais la réponse est toujours xml.
Je peux en faire la demande avec succès en enlevant le type de données, mais je voudrais bien éviter l'utilisation d'un eval pour désérialiser les données.
Si quelqu'un a des suggestions, je sera grandement apprécié. J'ai été en tirant sur mes cheveux pendant quelques jours sur ce.
JAVASCRIPT
(function($) {
$.ajaxSetup({
type: "POST",
contentType: "application/json; charset=utf-8",
global: false,
dataType: "json"
});
function auto() { console.log("test"); return; };
$.fn.species = {
test: function() { alert("test"); },
load: function() { //load and attach species list to element as dropdown
$.ajax({
url: "SpeciesService.asmx/List",
success: function(msg) { console.log(msg); },
error: function (xhr, desc, exceptionobj) {
console.log(xhr.responseText);
console.log(desc);
console.log(exceptionobj);
}
});
return this;
}
}; //Species Block
})(jQuery); //jQuery Alias Bloc
ASP.NET Webservice
<%@ WebService Language="VB" Class="SpeciesService" %>
Importations Système.Web
Les Importations Du Système.Web.Services
Les Importations Du Système.Web.Services.Les protocoles
Les Importations D'Espèces
Les Importations Du Système.Moment de l'exécution.La sérialisation
"Pour bénéficier de ce Service Web pour être appelé à partir d'un script, à l'aide de ASP.NET AJAX, décommentez la ligne suivante.
'_
_
_
Public Class SpeciesService
Inherits System.Web.Services.WebService
<WebMethod()> _
<Script.Services.ScriptMethod(responseFormat:=Script.Services.ResponseFormat.Json)> _
Public Function Data(ByVal id As Integer) As String
Dim curSpecies As New Species(id)
Return curSpecies.serialize
End Function
<WebMethod()> _
<Script.Services.ScriptMethod(responseFormat:=Script.Services.ResponseFormat.Json)> _
Public Function List() As String
Return Species.list()
End Function
Fin De La Classe
OriginalL'auteur Kelly Gendron | 2009-04-03
Vous devez vous connecter pour publier un commentaire.
Essayez de poster un mannequin de données json avec JQuery comme ceci :
OriginalL'auteur Çağdaş Tekin
C'est allusion plus qu'une réponse, j'ai été en utilisant PageMethods plutôt que de webservices et il fonctionne très bien. Je vais l'essayer si il souffre avec le même problème.
OriginalL'auteur Rashack
Si vous regardez les en-têtes est-il content-length est envoyé? IIS nécessite un contenu de longueur sur un post, de sorte que même l'ajout d'un corps est vide pour le poste pourrait le réparer.
Et je pense que la raison pour laquelle il fonctionne avec le type de données défini pour json est que jquery ajoute un vide de corps post pour vous dans ce cas.
OriginalL'auteur JeremyWeir
Bien, Merci beaucoup les gars pour votre aide.
Le manque de données factices est au cœur du problème. Quand j'ai essayé de l'ajouter avant, il a provoqué une erreur de serveur et je suis passé à autre chose.
Je ne peux même pas comprendre ce qui fixe l'erreur de serveur partie du problème. Je viens de passer dix minutes maboules de jouer avec la syntaxe (fixation de tirets, majuscules, commentaires) parce que j'étais trop frustré de se concentrer sur le problème à portée de main. J'ai rafraîchi la page et tout à coup il fonctionne très bien. La réponse était donc de publier les données inutiles et de réparer mystère aléatoire erreur de syntaxe.
De toute façon je ne peux pas vous remercier assez pour me remettre sur la bonne voie.
OriginalL'auteur Kelly Gendron