2010-10-26 4 views
0

J'ai un intervalle de pulsation qui appelle une fonction toutes les quelques secondes. Cette fonction envoie ensuite une requête JSON au serveur via jQuery, le serveur renvoie la réponse JSON et une fonction jQuery réussie comme d'habitude. Dans la fonction de succès, il fait une autre fonction jQuery, une foreach pour chaque identifiant. De chaque identifiant une autre fonction est appelée, fonction (ceci). Cette fonction effectue ensuite une autre requête JSON via jQuery et obtient les données.jQuery: retour IE vide pour l'ID

.: par exemple

function function() { 
jQuery.noConflict()(function($){ 
    $.ajax({ 
    success: function(data){ 
    jQuery.each(data.ids, function() { 
    function2(this); 
    } 
    }); 
    }); 
}); 
} 

function function2(id) { 

//In IE id is empty here 

jQuery.noConflict()(function($){ 
    $.ajax({ 
    // In IE id has data here in it, WTF 
    success: function(data){ 
    //In IE id is empty here 
    } 
    }); 
}); 
} 

De plus, gardez à l'esprit ce ne sont pas les vrais noms de fonction, juste ici comme un exemple pour ce que le problème réel est. Le problème est que dans IE 7 et IE 8, la variable id est vide. Dans tous les autres navigateurs, l'identifiant n'est jamais vide. Je ne comprends pas pourquoi. Quelqu'un peut-il m'aider s'il vous plaît ici?

Merci

Répondre

1

Je ne sais pas comment IE gère votre syntaxe, les multiples appels jQuery.noConlict() ne sont pas nécessaires, au lieu de votre appel (si vous avez besoin $ à l'intérieur) devrait ressembler à ceci:

function function2(id) { 
(function($){ 
    $.ajax({ 
    success: function(data){ 
    } 
    }); 
})(jQuery); 
} 

Ou plutôt, wrap toutes vos fonctions à l'intérieur d'un (function($) { /* code */ })(jQuery);, en appelant .noConflict() ainsi si nécessaire.

+0

Merci de le souligner. – SoLoGHoST

1

Yeesh, on dirait que vous avez trouvé un accident de parcours dans la compatibilité croisée jQuery. Je vais essayer de lier le .each() à this, et d'utiliser généreusement console.log() jusqu'à ce que vous trouviez où le script cesse de fonctionner. À l'aide des outils de développement d'IE (appuyez sur f12), vous devriez au moins pouvoir identifier le problème.

+0

même j'ai fait face au même problème, comme vous le faites dans ajax complète parfois IE n'a aucune idée à ce sujet DOM – kobe