J'ai essayé de résoudre ce problème pendant des heures (recherché ici aussi, mais aucune des solutions n'a fonctionné), donc je n'avais donc aucune autre option mais espère que quelqu'un me dise pourquoi cela se passe et comment puis-je le réparer.
Ceci est un code simple qui fonctionne avec Firefox, mais pas avec IE9 (ne pas avoir d'autres versions) p>
exemple code est ici: p>
La source est celle-ci: p> Le site Web n'a pas besoin d'être réel pour les tests. P> Comme vous pouvez le voir dans le violon sous Firefox, une Alertbox apparaît dire "hi", mais si vous exécutez exactement le même code dans IE9, le Alertbox n'apparaît pas. P> La même situation se produit avec Getjson Méthode, c'est un problème pour moi, car je souhaite exécuter du code à la place de l'alerte, mais cela ne s'exécutera pas dans IE9. P> p>
5 Réponses :
Avez-vous essayé d'utiliser Il fonctionne maintenant dans les deux navigateurs: P> getjson () code> au lieu d'Ajax? Ceci est une demande croisée et vous récupérez JSON afin que ce soit probablement le problème.
$.getJSON("http://query.yahooapis.com/v1/public/yql?q=select%20script%20from%20html%20where%20url%3D%27https%3A%2F%2Ftesting.website.com%2F%3Fcid%3D48hgfd45430DD%26id%3D4830F8CF0454312%27&format=json&diagnostics=true&_maxage=86400&callback=?",function(){
alert('hi');
});
"La même situation se produit avec la méthode Getjson" Oui, j'ai essayé.
(N'oubliez pas que vous devez ajouter le "Callback =?" Argument à l'URL ... Ceci est un moyen, ou vous pouvez spécifier "JSONP" comme type de données dans votre appel $ AJAX.
Parfait, savez-vous pourquoi il a besoin de cet argument?
Cet argument signifie simplement que cela va être un appel JSON-Navigateur JSON. JQuery Official Docs Dites: "Si l'URL inclut la chaîne" Callback =? "(ou similaire, telle que définie par l'API côté serveur), la demande est traitée comme JSONP. Voir la discussion du type de données JSONP en $. ajax () pour plus de détails. "
en utilisant Ici, l'exemple en utilisant getJson: p> $. getjson code> ou
$. AJAX code> Vous devez également spécifier
DataType code> paramètre 'JSONP'
Ce n'est que si vous utilisez JSONP.
Le problème de l'IE9 dépend de la gestion avancée du cache. P>
Si vous videz le cache d'IE et réexécutez la demande AJAX: la première fois fonctionnera. P>
Pour résoudre ce problème, vous devez envoyer votre réponse HTTP avec "Nostore = TRUE" et "Durée = 0" ou équivalent. P>
Voici un Exemple dans MVC . P>
J'ai résolu le problème en ajoutant "Durée = 0" avec l'URL p>
Si vous ajoutez Callback =? À l'URL, il sera transformé en quelque chose comme Callback = jquery1820719005049791166_1366033695001. C'est le nom de la fonction et du côté serveur, vous devez envelopper votre objet codé JSON dans cet appel de fonction. Donc, votre corps de réponse ne devrait pas être non seulement {ok: true}, mais jquery1820719005049791166_1366033695001 ({ok: true}); . Cela a fonctionné pour moi! P>