2010-03-23 42 views
1

所以这个函数在geko和webkit浏览器中工作正常,但IE7没有。我捣毁了我的大脑,试图发现问题。有什么东西为你伸出援手?IE浏览器中的JavaScript函数故障排除

基本前提是你传入一个数据对象(在这种情况下,来自jQuery的$ .getJSON的响应),我们检查响应代码,设置通知的类,追加一个图层并将其显示给用户。然后在时间限制后逆转过程。

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

这是作为一个arg为$ .getJSON传入吗?您的服务器是否将响应作为正确的MIME类型发回? – prodigitalson 2010-03-23 19:35:59

+0

IE中会发生什么?任何错误? – jholster 2010-03-23 19:36:52

+0

IE中没有错误。看起来我在这里跳了枪。该函数在IE中运行,它是jQuery的$ .getJSON,它无法运行响应函数(数据)。去看看prodigitalson的评论。 – CreativeNotice 2010-03-23 19:42:04

回答

0

我建议你看一下服务器返回的JSON输出。当.getJSON()未按预期调用回调函数时,通常是因为服务器返回的JSON在某处出现故障。

+0

JSON字符串验证通过后,我通过CFCF中的coldfusion CFC返回。我还有大量的空白空间正在被返回,所以我会去管理并看看会发生什么。 – CreativeNotice 2010-03-25 13:16:06

0

这个代码在IE8(没有IE7也尝试在兼容模式)使用存根数据

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

所以我认为你应该检查你的JSON从服务器获取。它有你使用的所有键吗? 哦!并检查从服务器得到的这种类型的字典/ json:{key_one: 'value', key_two: 'value',}。注意最后一个逗号 - 这可能是IE中的一个问题。