C# Web Service ne sera pas de sortie JSON, XML
Je suis en train d'utiliser jQuery et JSON avec un C# Service Web que j'ai écrit. N'importe quoi, le code suivant ne sortie en XML.
Webservice Code
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public string HelloWorld() {
return "Hello World!";
}
J'ai aussi ces attributs affectés à la classe
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ScriptService]
jQuery Code
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "ScheduleComputerDS.asmx/HelloWorld",
data: "{}",
dataType: "jsonp",
success: function(data) {
alert(data);
}
});
ASMX page renvoie toujours que le type de contenu "text/xml". Rien de ce que je suis absent?
MODIFICATIONS: En réponse à un couple de réponses:
Si j'ai le type de données "json", le contenu est encore XML et jQuery permettra aussi de ne pas appeler ma fonction de callback. Si j'ajoute le "&callback=?" à l'url, IIS renvoie une erreur HTTP 500.
Ma classe n'hérite de "Système.Web.Services.WebService".
De faire une recherche sur vos réponses les gars, on dirait que j'ai besoin de jouer avec WCF. Malheureusement, le JSON qui est retourné est plus conçu pour MS Ajax et c'est beaucoup de inutile la météorisation pour mon utilisation. Je peux chercher dans une bibliothèque open source comme Jayrock ou quelque chose de similaire.
Merci à tous pour votre aide!
vous pouvez modifier votre question initiale pour ajouter cette information. Il y a un lien modifier sous les étiquettes en bas à gauche de la section question
Si vous pouvez utiliser la WCF REST Kit de démarrage, vient de publier une Preview 2
OriginalL'auteur TheDude | 2009-03-19
Vous devez vous connecter pour publier un commentaire.
Autant que je sache, le ScriptService attribut permet tout simplement le service pour créer automatiquement un proxy JavaScript (en ajoutant /js à l'adresse de point de terminaison - ScheduleComputerDS.asmx/js dans votre cas). Il ne vous permet pas d'appeler les opérations sur le service de la façon dont vous essayez de faire.
Vous pouvez utiliser un Réparateur de service WCF (ce qui nécessite .NET 3.5) auquel vous pouvez accéder par l'envoi d'un bien en forme URI via un HTTP GET.
OriginalL'auteur Rob Windsor
Je pense qu'il y a une faute de frappe:
Devrait être:
Ah, n +1, alors? lol
Je sais que c'est un vieux post, je veux juste assurez-vous que tout le monde nouvelle sur ce, ne pas tomber sur le mauvais chemin, son
jsonp
pas de faute de frappe, vérifiez json-p.orgn'est pas recommandé. laisser
json
. directement à partir de ce lien que vous avez fourni: "les auteurs qui s'appuient sur JSON-P pour l'inter-domaine Ajax sont en fait de l'ouverture d'eux-mêmes jusqu'à potentiellement autant de chaos que fut tenté d'être évités par la mise en œuvre de la politique de "même origine, en premier lieu"OriginalL'auteur eduncan911
Riche Strahl a vraiment une base post qui devrait vous aider avec ceci.
http://www.west-wind.com/weblog/posts/164419.aspx
OriginalL'auteur bendewey
Avez-vous essayé avec le type de données
json
?Aussi, jetez un oeil à Encosia de Utilisation de jQuery pour Consommer ASP.NET JSON Web Services article sur le sujet. Il y a quelques bonnes infos sur les pièges les plus courants.
OriginalL'auteur Russ Cam