2010-11-11 5 views
0

J'ai une fonction jQuery que j'appelle sur un événement click. L'extrait de code est ci-dessousLa fonction jQuery .html() n'affiche pas de valeur de retour ajax dans Internet Explorer

$.ajax({ 
    url: '/delivery_windows/' + current_month + '/' + selected_day, 
    success: function(data) { 
    $('#time-selection').html(data); 
    } 
}); 

Au-dessus de cet extrait dans le fichier réel, current_month et SELECTED_DAY sont fixés. J'ai ajouté une fonction d'alerte (données) dans la fonction de succès et le bon html montre dans la boîte d'alerte, mais l'élément de sélection de temps affiche complètement vide sur la page Web. J'ai testé sous Firefox, Chrome, Safari et Opera. Tout cela fonctionne comme prévu. IE 7 et IE 8 sont les seuls qui retournent un élément de sélection de temps vide.

J'ai lu sur d'autres posts pour essayer d'appeler .empty() à la sélection temporelle, puis j'appelle .append() au lieu d'utiliser .html(), mais j'obtiens les mêmes résultats.

Est-ce que quelqu'un a une idée de ce que je fais de mal avec cela?

Toute aide serait grandement appréciée!

Je construis ce dans Drupal en cas qui fait la différence, avec jQuery 1.3.2

Merci d'avance !!

+2

Des odeurs comme un balisage invalide à cause des symptômes, à quoi ressemble '' data'? –

+1

Un test évident: fait '$ ('# time-selection'). Html ('foo');' fonctionne-t-il? Sinon, cela n'a rien à voir avec votre appel AJAX et tout ce qui concerne le balisage déjà sur la page. Soit le sélecteur est invalide (peut-être un peu trop évident), ou quelque chose d'autre est bancal avec le code HTML (par exemple, une étiquette non fermée). – VoteyDisciple

+0

Veuillez nous donner un exemple du code HTML qui a été alerté. On dirait qu'il y a quelque chose qui ne va pas avec IE que les autres navigateurs peuvent nettoyer. –

Répondre

1

La conversion des données renvoyées en chaîne devrait résoudre ce problème. Essayez suivante:

$.ajax({ 
    url: '/delivery_windows/' + current_month + '/' + selected_day, 
    success: function(data) { 
    $('#time-selection').html(String(data)); 
    } 
}); 
3

J'ai eu ce EXACT même problème, moins toutes les différences :)

Mon appel de service renvoyé une chaîne HTML avec plusieurs <tr> éléments en elle et je l'insertion que dans un élément <table> dans le rappel de succès de $.get().

Dans IE7, vous devez ajouter des balises <tbody> pour entourer les lignes de tableau insérées, sinon cela ne fonctionnera pas. IE7 insérera normalement les balises <tbody> pour vous lors du chargement de la page, mais si vous insérez un balisage avec java-script ou une API java-script (telle que jQuery), cela ne fonctionne pas. Donc vous devez le faire vous-même.

Questions connexes