ajax返回304,为什么jquery ajax调用在获取304状态码时从缓存填充数据变量?

我在我的移动应用程序中使用jquery ajax通过restful apis获取我的json数据。我的宁静apis已被配置为支持etags。我的宁静apis托管在另一个子域,所以我配置了CORS来处理跨域调用。在我的开发环境中,我将移动应用程序配置为在test.domain.com上运行,并将restful apis在test2.domain.com中运行,以便我可以测试跨域调用。所有这些都很棒!我Ajax调用的行为完全按照我期望与ETag的:为什么jquery ajax调用在获取304状态码时从缓存填充数据变量?

拨打电话获得JSON内容:

$.ajax({

ifmodified: true,

....

success: function(data){

}

我得到一个状态200和数据变量的成功回调有数据。 对同一资源进行另一次调用(不期待任何更改)我得到状态304,并且成功回调中的数据变量具有数据(从缓存中加载)。

到目前为止这么好。

现在,如果我将我的开发环境配置为将我的移动应用程序和宁静的apis都放在同一个域中,那么这里是我遇到问题的地方。

$.ajax({

ifmodified: true,

....

success: function(data){

}

我得到状态200,成功回调中的数据变量包含数据。 对同一个资源进行另一次调用(不期待任何更改)我得到状态304,并且数据变量未定义!

任何想法为什么使用此配置jquery不会使用缓存中的内容填充数据变量?我也在我的ajax调用中删除了CORS和crossdomain设置,但仍然没有运气。我使用的是jquery 1.7.1。

+1

检查你是否在xhttpr参数(我相信第一个arg)的'complete'回调中找到任何东西,特别是寻找'xhttpr.responseText'它有什么? –

2012-03-29 14:01:56

+0

responseText返回为“” –

2012-03-29 14:22:46

+0

我不确定这里有多少依赖于缓存,但如果请求的内容不是太密集,你总是可以添加'cache:false'选项(只需粘贴垃圾邮件在请求url的末尾)。另外,我不确定ifmodified选项的功能如何:http://api.jquery.com/jQuery.ajax/可能只是将其删除或将其设置为false将解决问题。干杯。 –

2012-03-30 14:39:27

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值