2010-07-12 52 views
1

注意:这涉及到previous questionjQuery对Java/Wicket服务器的AJAX调用在IE中无响应(6/7/8)

我有一个Wicket页面,它有一些复杂的客户端交互,我决定使用jQuery代替Wicket(长篇讨论,我知道)。基本上我只是建立一个JSON对象,通过AJAX提交它,并在完成时执行一些操作。该调用在Firefox中正常工作,但不适用于任何版本的IE。我已经验证过没有多余的逗号。这里是代码:

var lookup = { 
    'name': name, 
    'description': description, 
    'items': [{ 
     'name': itemName, 
     'value': itemValue 
    }] 
}; 

$.ajax({ 
    type: 'post', 
    url: '${callbackURL}', // This file is parsed by Wicket and receives a dynamic callback URL here. This is not jQuery! 
    cache: false, 
    data: {'lookup': JSON.stringify(lookup)}, 
    contentType: 'application/json', 
    complete: function() { 
     alert('This never gets called in IE!') 
    } 
}); 

有什么建议吗?谢谢!

更新:看来我的问题是由于IE缓存资源。我已经在我的HTML文件中放置了no-cache代码,但似乎这个页面仍然被缓存(并且通过扩展名,它引用的JS),或者带有我的jQuery代码的JS文件被缓存旧的回调网址,以便服务器不回应,因为该URL没有任何内容了。当我删除漂亮的URL时,一切正常(因为Wicket每次生成URL都是唯一的)。尽管如此,即使没有服务器响应,也不应该调用complete函数吗?

+0

它会帮助很多张贴问题的代码。你确定HTTP请求是否确实发生?你有没有通过IE8调试程序? – Pointy 2010-07-12 15:59:37

+0

对不起,最初没有发布代码。我不得不在发布我的问题的过程中离开,只是想把它放在那里。 正在进行AJAX请求(我正在从请求中成功保存数据),但回调从未得到执行。没有任何异常(我将这个调用包装在try/catch中,并且永远不会捕获),并且我在$中添加了'error:function(request,status,err){...}' .ajax()调用并验证没有错误返回。 – Jared 2010-07-12 17:45:54

回答

0

这是由于积极的IE缓存。这是通过向URL添加一个唯一生成的参数来解决的,因此浏览器会认为它每次都是一个新的URL。

0

你可以发布你正在使用的代码来进行AJAX调用,并且你能澄清它如何在IE中不起作用吗?是不是在IE中调用AJAX请求,请求是否返回错误,是否存在处理响应的问题?

通常这会归因于无关的逗号,但是您已经排除了这些逗号,所以我认为需要更多信息才能帮助我们。

+0

你可以尝试添加一个dataFilter参数给你的调用,看看它是否有某种类型的解析错误(尽管我希望处理的错误被调用,你也可以尝试在请求中添加一个超时值。有什么阻止IE收到整个响应,在这种情况下,你会得到一个超时错误 – Zam 2010-07-13 01:49:22

相关问题