我在我的移动应用程序中使用 jquery ajax 通过 Restful api 获取我的 json 数据。我的 Restful api 已配置为支持 etag。我的 Restful api 托管在另一个子域上,因此我配置了 CORS 来处理跨域调用。在我的开发环境中,我已将移动应用程序配置为在 test.domain.com 上运行,并将 Restful api 配置为在 test2.domain.com 上运行,以便我可以测试跨域调用。所有这一切都很棒!我的 ajax 调用的行为与我对 etag 的预期完全一样:
调用获取json内容:
$.ajax({
ifmodified: true,
....
success: function(data){
}
我得到状态 200 并且成功回调中的数据变量包含数据。 再次调用同一资源(不期望任何更改),我得到状态 304,并且成功回调中的数据变量具有数据(从缓存加载)。
到目前为止一切顺利。
现在,如果我将我的开发环境配置为在同一域上同时拥有我的移动应用程序和 Restful api,这就是我遇到问题的地方。
$.ajax({
ifmodified: true,
....
success: function(data){
}
我得到状态 200 并且成功回调中的数据变量包含数据。 再次调用同一资源(不期望任何更改)我得到状态 304 和数据变量未定义!!!!
有什么想法为什么使用此配置 jquery 不会用缓存中的内容填充数据变量?我还删除了 ajax 调用中的 CORS 和跨域设置,但仍然没有运气。我正在使用 jquery 1.7.1。
最佳答案
默认情况下,总是发出请求,但浏览器可能会从其缓存中提供结果。要禁止使用缓存结果,请将缓存设置为 false。如果自上次请求以来 Assets 尚未修改,要使请求报告失败,请将 ifModified 设置为 true。
关于jquery - 为什么在获取 304 状态码时,jquery ajax 不调用从缓存中填充数据变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9926556/