【发布时间】:2011-03-14 21:12:07
【问题描述】:
注意:这与 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 函数也不应该被调用吗?
【问题讨论】:
-
发布有问题的代码会有很大帮助。你确定HTTP请求是否真的发生了吗?你用 IE8 调试器单步执行了吗?
-
很抱歉最初没有发布代码。我不得不在发布我的问题的过程中离开,只是想把它拿出来。正在发出 AJAX 请求(我正在成功地从请求中保存数据),但回调永远不会被执行。没有抛出异常(我已经将调用包装在 try/catch 中,并且从未将其捕获),并且我已将
error: function(request, status, err) { ... }添加到 $.ajax() 调用并验证那里没有返回错误。
标签: java jquery ajax internet-explorer wicket