Je trouve de nombreuses "solutions" à ce problème apparemment courant, mais hélas, aucune ne semble fonctionner pour moi - bien sûr. J'ai du code jQuery qui essaie de publier sur un service Web ASP.NET 3.5. Le service web est censé retourner un peu de JSON. Je reçois 501 erreurs internes de serveur avec le code ci-dessous, mais selon les solutions trouvées en ligne, c'est comment il est censé être! La fonction d'erreur dans le code jquery affiche un parsererreur. Si je change la façon dont les paramètres de données sont passés au service ("userID=3456"
), et supprimez la propriété contentType et changez le dataType en "texte", alors aucune erreur, mais il renvoie le JSON dans une chaîne XML.Impossible de récupérer un objet JSON à partir du serveur Web ASP.NET en utilisant jQuery
Voici mon code jQuery:
$.ajax({
type: "POST",
url: "mywebservice.asmx/Initialize",
data: "{'userID': '3456'}",
dataType: "json",
contentType: "application/json; charset=utf-8",
success: function(result) {
alert("success");
},
error: function(request, status, errorThrown) {
alert(status);
alert(errorThrown);
}
});
Voici mon code ASP.NET:
<WebMethod()> _
Public Function Initialize(ByVal userID As Integer) As String
Dim scormInstance As New CMI(userID)
Return scormInstance.ToJsonString
End Function
Voici la requête HTTP et la réponse dans mon navigateur (Firefox 3.5.1)
http://localhost/cognition/webservices/cognitionapi.asmx/Initialize
POST /cognition/webservices/cognitionapi.asmx/Initialize HTTP/1.1
Host: localhost
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.1.1) Gecko/20090715 Firefox/3.5.1 (.NET CLR 3.5.30729)
Accept: application/json, text/javascript, */*
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Content-Type: application/json; charset=utf-8
X-Requested-With: XMLHttpRequest
Referer: http://localhost/cognition/scorm-test2.html
Content-Length: 20
Cookie: RadEditorGlobalSerializeCookie=[_ctl0__ctl0__ctl0_Content_mainContent_mainContent_txtSpecialInstructionsModules]-[]#[_ctl0__ctl0__ctl0_Content_mainContent_mainContent_txtSpecialInstructionsToolbars]-[]#
Pragma: no-cache
Cache-Control: no-cache
{"userID":"1234"}
HTTP/1.x 500 Internal Server Error
Cache-Control: private
Content-Length: 4956
Content-Type: text/html; charset=utf-8
Server: Microsoft-IIS/7.0
X-AspNet-Version: 2.0.50727
X-Powered-By: ASP.NET
Date: Mon, 27 Jul 2009 21:24:41 GMT
Des idées sur ce que je fais exactement mal ???? !!!!?
Merci!
J'ai essayé et pas de chance. –
J'ai dû créer un httpmodule personnalisé qui placerait la réponse du webservice dans un appel de méthode (JSONP) afin qu'il fonctionne sur plusieurs domaines. –