Я использую jquery ajax в своем мобильном приложении, чтобы получить данные json через restful apis. Моя успокоительная apis настроена на поддержку etags. Моя успокоительная apis размещена на другом субдомене, поэтому я настроил CORS для обработки вызовов перекрестных доменов. В моей среде dev я настроил мобильное приложение для запуска на test.domain.com и остальной apis для запуска в test2.domain.com, чтобы я мог протестировать перекрестные вызовы. Все это отлично работает! Мои Ajax звонки ведут себя именно так, как я ожидал бы с ETags:Почему jquery ajax вызывает заполнение переменной данных из кеша при получении кода статуса 304?
сделать вызов, чтобы получить JSon содержание:
$.ajax({
ifmodified: true,
....
success: function(data){
}
я получаю статус 200 и переменных данных в обратный вызов имеет данные. Сделайте другой вызов того же ресурса (не ожидая каких-либо изменений). Я получаю статус 304, а переменная данных в обратном вызове успеха имеет данные (загруженные из кеша).
Пока все хорошо.
Теперь, если я сконфигурировал среду моего приложения, чтобы иметь как мое мобильное приложение, так и остальную часть apis в том же домене, здесь я столкнулся с проблемами.
$.ajax({
ifmodified: true,
....
success: function(data){
}
Я получаю статус 200, а переменная данных в обратном вызове успеха имеет данные. Сделайте другой вызов того же ресурса (не ожидая каких-либо изменений) Я получаю статус 304 и переменную данных в undefined !!!!
Любые мысли, почему с этой конфигурацией jquery не заполняет переменную данных тем, что находится в кеше? Я также удалил CORS и настройку crossdomain в моем вызове ajax, но до сих пор не повезло. Я использую jquery 1.7.1.
Проверьте, есть ли что-либо в обратном вызове 'complete' в аргументе xhttpr (первый аргумент, который я считаю), в частности, искать' xhttpr.responseText', есть ли что-нибудь? – dennmat
responseText возвращается как "" – bmurmistro
Я не уверен, насколько вы полагаетесь на кеширование здесь, но если какой-либо запрос не слишком интенсивный, вы всегда можете добавить опцию «cache: false» (просто палки мусор в конце URL-адреса запроса). Также я не уверен в том, что опция 'ifmodified' делает то, что, по вашему мнению, делает: http://api.jquery.com/jQuery.ajax/, возможно, просто удалив это или установив его в false, это устранит проблему. Приветствия. – dennmat