L'appel ASP.NET web fonction de service via la méthode GET avec jQuery
Je suis en train d'appeler web fonction de service via la méthode GET à l'aide de jQuery, mais avoir un problème. C'est un service web code:
[WebService(Namespace = "http://something.com/samples")]
[ScriptService]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class TestWebService : System.Web.Services.WebService {
[WebMethod]
public string Test2()
{
string result = null;
try
{
result = "{'result':'success', 'datetime':'" + DateTime.Now.ToString() + "'";
}
catch (Exception ex)
{
result = "Something wrong happened";
}
return result;
}
}
Que la façon dont je l'appel de la fonction:
$.ajax({ type: "GET",
url: "http://localhost/testwebsite/TestWebService.asmx/Test2",
data: "{}",
contentType: "application/json",
dataType: "json",
error: function (xhr, status, error) {
alert(xhr.responseText);
},
success: function (msg) {
alert('Call was successful!');
}
});
Méthode est appelée avec succès, mais la chaîne de résultat est couverte par des balises XML, comme ceci:
<string>
{'result':'success', 'datetime':'4/26/2010 12:11:18 PM'
</string>
Et j'obtiens une erreur à cause de cela (gestionnaire d'erreur est appelé). Quelqu'un sait ce qui peut être fait à ce sujet?
Où est votre"} " à la fin, de retour de la chaîne JSON?
Voulez-vous dire de chaîne json couverts par des balises XML? Je pense que j'ai fait quelque chose de mal quand j'ai copié à partir de la fenêtre du navigateur, il devrait être là, bien sûr.
Peut-être, mais je ne le vois pas dans le code du service web.
Quelle est la version de .Net vous aide?
Voir cette question: stackoverflow.com/questions/288850/...
Voulez-vous dire de chaîne json couverts par des balises XML? Je pense que j'ai fait quelque chose de mal quand j'ai copié à partir de la fenêtre du navigateur, il devrait être là, bien sûr.
Peut-être, mais je ne le vois pas dans le code du service web.
Quelle est la version de .Net vous aide?
Voir cette question: stackoverflow.com/questions/288850/...
OriginalL'auteur the_V | 2010-04-26
Vous devez vous connecter pour publier un commentaire.
Activer ASP.NET service web ASMX pour HTTP POST /GET demandes
OriginalL'auteur Spain Train
Règle de json:
Vous pouvez uniquement accéder aux données à partir de la même domaine!
La seule exception est lorsque vous utilisez jsonp (ce qui est assez compliqué à mettre en œuvre car il n'y a pas de jsonp sérialiseur dans le .NET framework).
Si vous utilisez un service web standard (et pas WCF) vous pouvez trouver des conseils howto mettre en œuvre cette ici.
OriginalL'auteur ntziolis
Assurez-vous d'ajouter à votre ajax options:
De l'ensemble de votre requête devrait ressembler à ceci pour obtenir json en arrière à la place de XML:
ScottGu a une ventilation complète sur ce qui est exigé ici, mais il semble que le manque
contentType
dans votre cas (que l'on m'a conduit les noix trop pendant un certain temps).Quelle est l'erreur s'il alerte? aussi, juste pour le plaisir, pensez-vous avoir le même comportement avec la POSTE?
POST fonctionne bien, mais je veux le faire fonctionner à OBTENIR. Sur l'erreur: xhr.responseText est suivant - <string xmlns="something.com/samples">{'résultat':'succès', 'datetime':'27.04.2010 0:57:30'</string>
Essayez de changer
[ScriptMethod]
à[ScriptMethod(UseHttpGet=true)]
surTest2
, voir ce que votre réponse est.La réponse est la même, la chaîne est couvert avec XML trucs
OriginalL'auteur Nick Craver
Vous pouvez essayer le réglage de la ResponseFormat sur vos méthodes. Voir http://williamsportwebdeveloper.com/cgi/wp/?p=494 de voir comment ils ont fait pour JSON. Il a probablement les valeurs par défaut au format XML.
OriginalL'auteur MStodd
Vous avez besoin pour décorer la méthode avec le ScriptMethodAttribute:
Cela permettra d'assurer que la méthode renvoie du JSON par défaut (la valeur par défaut de
ResponseFormat
estJson
).OriginalL'auteur Zhaph - Ben Duguid
Avez-vous essayé
WebInvokeAttribute
, il a des membres qui définissent Demande & formats de Réponse où vous pouvez définir pourWebMessageFormat.Json
.Quelque chose comme:
[WebInvoke(UriTemplate = "ServiceName", RequestFormat = WebMessageFormat.Json,
ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Bare,
Method = "POST")]
OriginalL'auteur Ajaxe
service web.
le javascript sur le client.
OriginalL'auteur Y.Yanavichus