Jquery AJAX ne fonctionne pas sur IE 7/8
Je suis en train de déboguer la raison pour laquelle mon ajax get/post ne fonctionne pas dans IE 7/8
Voici mon code:
$.ajax({type: "POST", dataType:'html',url: "/places/set_member/add/",data: "place_id="+place_id ,
beforeSend: function() {$("<span class='notice'>Saving...</span>").prependTo('body');},
success: function(){
$.ajax({type:"GET",url:url,success:function(html){$('div.place-list .ui-tabs-panel').html(html);},complete:function(){resetAddThis();}})
},
complete: function() {
$('span.notice').fadeOut(500);
$('span.notice').remove();
}});
Maintenant, cela fonctionne très bien dans les FF, Safari Win/Mac mais pas sous IE 7/8
J'ai téléchargé le violoneux, et regardé les appels, le script est censé envoyer des données au serveur, puis re-charger le code HTML qui est maintenant la nouvelle mise à jour de l'information. Ce qui se passe est que le premier appel renvoie une erreur 500, mais, puis, après le html est rechargé, et la même action est de faire encore une fois, il va envoyer, avec 200ms, de sorte qu'il donne l'apparence que c'est pas l'économie, c'est uniquement sur le deuxième essai.
Est-il quelque chose que je fais mal, ou quelque chose que je dois ajouter? C'est une boucle php de sorte que cette fonction est appliquée à la même lien sur 20 à 30 éléments sur la page.
- Pourquoi êtes-vous en faire 2 appels ajax? Lorsque vous faites votre demande à "/lieux/set_member/ajouter/" pour enregistrer, afficher le code html que vous avez besoin, plutôt que de faire un autre appel ajax pour l'obtenir.
- Pas une mauvaise pensée, je suis plutôt nouveau à tout cela, ce n'était pas sûr de la façon de le faire.
Vous devez vous connecter pour publier un commentaire.
IE met en cache tous les appels ajax qui ne sont pas type de POSTE. J'ai trouvé qu'il est préférable de faire tous les appels Ajax POST pour éviter de IE faire cela, même si vous publiez des données vide.
Ou vous pouvez faire comme @redsqaure suggère ci-dessous et de le faire:
$.ajaxSetup({cache:false})
Si vous n'avez pas besoin de votre type de données HTML, vous pouvez essayer cette.
IE caches des appels ajax. assurez-vous d'inclure un nombre aléatoire ou chaîne aléatoire de votre appel, comme
&rand=[some randomly generated something]
et essayez à nouveau.Enfin!!!
J'ai résolu mon problème qui est en raison de "l'origine de la politique" et juste soulever dans IE!:
Je viens de changer le URL paramètre à partir de : 'http://mysite.com/api/' à '/api/'
et ça marche!!!!!
espère que ça aidera certains d'entre vous!
J'ai eu le même problème avec jquery 2.0.2. J'ai changé le jquery pour 1.8.1 et Ajax travaillé parfaite dans IE.
Dans la plupart des navigateurs, vous pouvez spécifier:
...pour un appel ajax jQuery et ce sera publier sur lui-même.
Dans IE, vous devez fournir une adresse URL.