2010-03-23 6 views
1

Donc, cette fonction fonctionne très bien dans les navigateurs Geko et Webkit, mais pas IE7. J'ai cassé mon cerveau en essayant de repérer le problème. Quelque chose colle pour toi?Trouble Shoot Fonction JavaScript dans IE

La prémisse de base est que vous transmettez un objet de données (dans ce cas une réponse de $ .getJSON de jQuery) nous vérifions un code de réponse, définissons la classe de notification, ajoutons une couche et l'affichons à l'utilisateur. Puis inversez le processus après une limite de temps.

function userNotice(data){ 
    // change class based on error code returned 
    var myClass = ''; 
    if(data.code == 200){ myClass='success'; } 
    else if(data.code == 400){ myClass='error'; } 
    else{ myClass='notice'; } 
    // create message html, add to DOM, FadeIn 
    var myNotice = '<div id="notice" class="ajaxMsg '+myClass+'">'+data.msg+'</div>'; 
    $("body").append(myNotice); 
    $("#notice").fadeIn('fast'); 
    // fadeout and remove from DOM after delay 
    var t = setTimeout(function(){ $("#notice").fadeOut('slow',function(){ $(this).remove(); }); },5000); 
} 
+0

est-ce que cela est passé en argument pour $ .getJSON? Votre serveur envoie-t-il la réponse comme le mime-type correct? – prodigitalson

+0

Que se passe-t-il dans IE? Des erreurs? – jholster

+0

Aucune erreur dans IE. On dirait que j'ai sauté l'arme ici. La fonction s'exécute dans IE, c'est $ .getJSON de jQuery qui échoue à exécuter la fonction de réponse (données). Aller à regarder dans la remarque de prodigitalson. – CreativeNotice

Répondre

0

Je vous suggère de regarder dans la JSON retournée par le serveur. Lorsque .getJSON() n'appelle pas la fonction de rappel comme prévu, c'est généralement parce que le JSON retourné par le serveur est cassé quelque part.

+0

Pendant que la chaîne JSON est validée, je la retourne via un CFC ColdFusion dans CF7. J'ai aussi une tonne d'espace blanc, donc je vais m'y prendre et voir ce qu'il se passe. – CreativeNotice

0

Ce code fonctionne dans IE8 (ne pas IE7 mais aussi essayer en mode compat) en utilisant les données stub

var d = {code:200, msg:'lorem ipsum'} 
userNotice(d); 

donc je pense que vous devriez vérifier JSON que vous obtenez de serveur. A-t-il toutes les clés que vous utilisez? Oh! Et vérifiez quelque chose comme ce genre de dict/json que vous obtenez du serveur: {key_one: 'value', key_two: 'value',}. Notez la dernière virgule - cela peut être un problème dans IE.