EDIT: Au début, je pensais que ce n'était pas interdomaine fonctionne pas du tout, maintenant je me rends compte qu'il ne fonctionne que dans IEdomaine croix jsonp ne fonctionne pas dans IE
J'utilise jQuery pour appeler un service web (ASP.NET .axmx
), et en essayant de nous jsonp
afin que je puisse l'appeler à travers différents sites. En ce moment, il fonctionne UNIQUEMENT dans IE, mais pas dans Firefox, Chrome, Safari. En outre, dans IE, une boîte de dialogue affiche un avertissement "Cette page accède à des informations qui ne sont pas sous son contrôle ..." Des idées?
Voici le code:
$.ajax({
type: "POST",
url: "http://test/TestService.asmx/HelloWorld?jsonp=?",
dataType: "jsonp",
success: function(data) {
alert(data.prop1);
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
alert(XMLHttpRequest.status + " " + textStatus + " " + errorThrown);
}
});
Et le code du serveur est:
[ScriptService]
public class TestService : System.Web.Services.WebService{
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public void HelloWorld() {
string jsoncallback = HttpContext.Current.Request["jsonp"];
var response = string.Format("{0}({1});", jsoncallback, @"{'prop1' : '" + DateTime.Now.ToString() + "'}");
HttpContext.Current.Response.Write(response);
}
}
Pouvez-vous nous montrer comment vous faites l'appel (je suppose que vous vous injectez l'élément de script approprié) du côté jQuery? –
Cela peut être un refrain, donnant tout ce qui se passe, mais pourquoi spécifiez-vous POST plutôt que GET? –
@Matt Gibson ... ça marche! Si vous voulez l'écrire comme réponse, je l'accepterai. Pourquoi serait-ce important? – iboeno