我在移动APP应用程序中使用jquery ajax通过rest风格的应用程序获取json数据。 我的dxyapis已经配置为支持etags。 因为我的dxyapis托管在不同的子域中,所以我将CORS配置为处理跨域调用。 在我的开发环境中,移动APP应用程序配置为在test.domain.com上运行,rest风格的APIs可以在test2.domain.com上运行以测试域间调用。 这些都很棒! 我对Ajax调用的行为正如我的期待和ETag一样。 为什么jquery ajax调用在获取304状态代码时从缓存中填充数据变量?
通过电话获取JSON的内容:
$.Ajax({
if modified :真,
.
success :功能(data ) {
}
我在状态200和数据变量的成功回调中有数据。 如果对同一资源进行另一次调用,则会获得状态304,并且成功回调的数据变量中有数据。 从缓存中加载。
到现在为止这么好。
如果将开发环境配置为将移动APP应用程序和dxy APIs放在同一个域中,则出现此问题。
$.Ajax({
if modified :真,
.
success :功能(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