注意:这与 previous question 相关.
我有一个 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 文件中放入了无缓存代码,但似乎该页面仍在被缓存(并且通过扩展,它引用了 JS),或者其中包含我的 jQuery 代码的 JS 文件正在被缓存其中包含旧的回调 URL,以便服务器不会响应,因为该 URL 上不再有任何内容。当我删除漂亮的 URL 时,一切正常(因为每次 Wicket 生成 URL 时,它都是唯一的)。尽管如此,即使没有服务器响应,也不应该调用 complete
函数吗?
最佳答案
这是由于 IE 缓存过多造成的。通过向 URL 添加唯一生成的参数来解决此问题,这样浏览器每次都会认为它是一个新 URL。
关于java - 对 Java/Wicket 服务器的 jQuery AJAX 调用在 IE 中没有响应 (6/7/8),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3229945/