J'ai regardé l'exemple de code que vous avez fourni et le problème est que vous violez la same origin policy restriction
. Vous ne pouvez pas effectuer d'appels AJAX interdomaines. Dans votre exemple, le service est hébergé sur http://localhost:35798
et l'application Web l'appelle http://localhost:23590
, ce qui n'est pas possible. Vous devrez héberger le service et l'application appelante dans le même projet ASP.NET. Vous semblez avoir tenté d'activer CORS du côté client en utilisant ($.support.cors = true;
) mais sur votre service ne prend pas en charge CORS. Un autre problème rencontré avec votre page d'appel (TestHTML5.htm
) est le fait que vous avez inclus jquery deux fois (une fois la version réduite et une fois la version standard) et que vous avez inclus votre script() après jquery. Vous devriez corriger vos références de script. Et encore un autre problème est la ligne suivante <script type="text/javascript"/>
qui est invalide.
Donc, commencer par la fixation de votre balisage (j'ai enlevé tout le bruit CSS que vous aviez dans votre balisage afin de se concentrer sur les parties importantes):
<!DOCTYPE html>
<html dir="ltr" lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8" />
<title>SignUp Form</title>
<script type="text/javascript" src="../Scripts/jquery-1.7.2.min.js"></script>
<script type="text/javascript" src="../Scripts/TestHTML5.js"></script>
</head>
<body>
<button id="Send" onclick="testHTML5OnClick();">
Send Me ID!
</button>
</body>
</html>
puis dans votre TestHTML5.js
vous pouvez aussi nettoyer un un peu. Par exemple votre service écoute le modèle d'URL suivant json/{id}
et n'accepte que les verbes GET et vous essayez d'utiliser POST ce qui n'est pas possible. En plus de cela, vous essayez d'utiliser la méthode JSON.stringify qui n'a aucun sens avec le verbe GET. Vous devriez simplement envoyer l'identifiant dans le cadre de la partie url que vous avez définie dans votre service.
function testHTML5OnClick() {
var id = 5;
var url = "../RestServiceImpl.svc/json/" + id;
var type = 'GET';
callLoginService(url);
}
function callLoginService(url, type) {
$.ajax({
type: type,
url: url,
success: serviceSucceeded,
error: serviceFailed
});
}
function serviceSucceeded(result) {
alert(JSON.stringify(result));
}
function serviceFailed(result) {
alert('Service call failed: ' + result.status + '' + result.statusText);
}
Avec quelles navigateurs et navigateurs testez-vous? L'objet JSON n'est pas disponible dans IE7 – Tung
J'utilise IE9. le même problème ne se produit pas pour IE10 dans Windows 8. Cela fonctionne (aucune erreur de Json) parfaitement bien. – nishantcop
Assurez-vous que votre page n'est pas affichée en mode quirks, ni en [mode de compatibilité] (http://www.sevenforums.com/tutorials/1196-internet-explorer-compatibility-view-turn-off.html). Si vous voulez soutenir ces modes de fonctionnement, alors la suggestion de Sharrooz devrait fonctionner. Voir la réponse [ici] (http://stackoverflow.com/questions/5339232/json-is-undefined-error-in-javascript-in-internet-explorer) – Tung