Si votre service WCF est dans le même domaine que vous pouvez utiliser la fonction ci-dessous qui exécuterait l'appel
function TestingWCFRestWithJson() {
$.ajax({
url: "http://localhost/Service/JSONService.svc/GetDate",
dataType: "json",
type: "GET",
success: function (data, textStatus, jqXHR) {
// perform a success processing
},
error: function (jqXHR, textStatus, errorThrown) {
// show error to the user about the failure to invoke the service
},
complete: function (jqXHR, textStatus) {//any process that needs to be done once the service call is compelte
}
});
}
Si votre service WCF est dans un autre domaine autre que votre domaine d'applications appelant alors vous avez besoin pour effectuer un appel JSONP comme indiqué ci-dessous:
function TestingWCFRestWithJsonp() {
$.ajax({
url: "http://domain.com/Service/JSONPService.svc/GetDate",
dataType: "jsonp",
type: "GET",
timeout: 10000,
jsonpCallback: "MyCallback",
success: function (data, textStatus, jqXHR) {
},
error: function (jqXHR, textStatus, errorThrown) {
},
complete: function (jqXHR, textStatus) {
}
});
}
function MyCallback(data) {
alert(data);
}
Lorsqu'un appel JSONP est réalisée à l'aide de JQuery $ .ajax les méthodes complètes/succès/erreur ne sont pas déclenchés plutôt une méthode de rappel comme indiqué est tiré qui doit être traitée par le service WCF. Il existe un attribut "crossDomainScriptAccessEnabled" fourni par l'infrastructure WCF qui identifie si la demande est un appel JSONP et écrit le contenu dans le flux pour appeler la fonction de rappel avec des données. Il est disponible sur l'élément de fixation comme indiqué ci-dessous:
<webHttpBinding>
<binding name="defaultRestJsonp" crossDomainScriptAccessEnabled="true">
<readerQuotas maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxDepth="64" maxNameTableCharCount="2147483647" />
<security mode="None" />
</binding>
</webHttpBinding>
'Asynchronous JavaScript and xml' – undefined