J'essaie d'appeler la fonction de service Web via une méthode Obtenir la méthode à l'aide de JQuery, mais d'avoir un problème. Ceci est un code de service Web: c'est ainsi que je appelle la fonction: p> <string>
{'result':'success', 'datetime':'4/26/2010 12:11:18 PM'
</string>
7 Réponses :
règle pour JSON: Vous ne pouvez accéder aux données que du même domaine fort>! P> li>
La seule exception est lorsque vous utilisez
Si vous utilisez un service Web
Pour l'instant, cela devrait être suffisant pour moi d'accéder aux données dans le même domaine. Mais même si j'ouvre URL comme celui-ci localhost / testwebsite / testwebserservice.asmx / test2 dans le navigateur Ma machine locale, je vois XML rendu. La seule chose dont j'ai besoin maintenant est de me débarrasser de XML
Assurez-vous d'ajouter ceci à vos options Ajax:
$.ajax({ type: "GET", url: "http://localhost/testwebsite/TestWebService.asmx/Test2", data: "{}", contentType: "application/json", dataType: "json", contentType: "application/json; charset=utf-8". error: function (xhr, status, error) { alert(xhr.responseText); }, success: function (msg) { alert('Call was successful!'); } });
Changer de contenuType n'a pris aucun effet
@The_V - Quelle erreur est-elle alerte? Aussi juste pour des coups de pied, obtenez-vous le même comportement avec la poste?
La poste fonctionne bien, mais je veux le faire travailler avec get. À propos de l'erreur: xhr.responseText suit -
@The_v - essayez de changer [scriptMethod] code> à
[scriptMethod (usehttpet = true)]] code> sur
test2 code>, voir quelle est votre réponse.
La réponse est la même, la chaîne est recouverte de trucs XML
Vous pouvez essayer de définir la réponseforme sur vos méthodes. Voir http://williamsportwebdeveloper.com/cgi/wp/?p=494 pour voir comment ils l'ont fait pour Json. Il suffit probablement de parraillie sur XML. P>
J'ai essayé d'ajouter l'attribut suivant à la définition de la méthode: [scriptMethod (ResponseFormat = ResponseFormat.json, usehttpt = true, XMLSerializestring = Faux)] Mais cela n'a pas fonctionné
Vous devez décorer la méthode avec le ScriptMethodattribute :
[WebService(Namespace = "http://something.com/samples")] [ScriptService] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] public class TestWebService : System.Web.Services.WebService { [WebMethod] [ScriptMethod] public string Test2() { [...] } }
L'attribut [scriptMethod] ne prend aucun effet
Activer le service Web ASP.NET ASMX Pour les demandes HTTP POST / GET
[WebMethod] [ScriptMethod(UseHttpGet = true)] public string Test2() { [...] }
Avez-vous essayé webinvokeattribute code>, il a des membres qui définissent les formats de demande et de réponse où vous pouvez définir
webmessageformat.json code>.
Quelque chose comme:
[webinvoke (uritemplate = "servicename", demandeformat = webmessageformat.json,
ResponseFormat = WebMessageFormat.json, BodyStyle = WebMessagebodyStyle.bare,
Méthode = "post")] code> p>
Où est votre "}" à la fin de la chaîne de JSON retournée?
Voulez-vous dire JSON String couvert par des balises XML? Je pense que j'ai fait quelque chose de mal quand je l'ai copié de la fenêtre du navigateur, il devrait être là, bien sûr.
Peut-être que je ne le vois pas dans le code de service Web non plus.
Quelle version de .NET utilisez-vous?
Voir cette question: Stackoverflow.com/Questtions/2888850/...