Я пытаюсь получить какой-то уникальный идентификатор для окна, методы ajax теперь правильно обрабатывают ответы 304 Not Modified путем вызова обработчика success () в соответствии со спецификацией W3C для XMLHTTPRequest. Это позволяет вашему приложению обрабатывать ...
Начиная с jQuery 1.5, методы ajax теперь правильно обрабатывают ответы 304 Not Modified путем вызова обработчика success () в соответствии со спецификацией W3C для XMLHTTPRequest. Это позволяет вашему приложению рассматривать запрос как успешный, даже если сервер на самом деле не вернул никаких данных (потому что у вас уже есть последние кэшированные данные).
Для обычного (некэшированного) запроса GET обработчиком успеха является вызывается со следующими аргументами:
Для обычного (некэшированного) запроса GET обработчиком успеха является вызывается со следующими аргументами:
Для обычного (некэшированного) запроса GET обработчиком успеха является вызывается со следующими аргументами:
Для кэшированного запроса GET вызывается обработчик успеха со следующими аргументами:
(по крайней мере, так они возвращаются в IOS 4.2 для веб-приложения, которое использует приложение кэширование через файл манифеста. Я предполагаю, что это согласуется с общим кешированием браузера на большинстве платформ / браузеров).
Вы можете видеть, что аргумент «данные» заполняется только в том случае, если запрос был 200 OK; где jqXHR.responseText всегда заполняется данными, независимо от того, были ли эти данные получены с сервера (200 OK) или из кеша (304 Not Modified).
Учитывая, что в большинстве запросов GET ваш обработчик успеха если вы захотите что-то сделать с данными, которые вы получили, независимо от того, откуда они взялись, для вашего кода успеха было бы лучше всегда использовать jqXHR.responseText, а не делать что-то вроде этого:
if ("notmodified" === status) {
// do something with jqXHR.responseText
} else {
// do something with data
}
Или когда-нибудь будет случай, когда jqXHR.responseText не будет заполнен в обработчике успеха, но аргумент данных будет ?
Я должен пройти через кодовую базу и изменить все обработчики успеха (раньше я был на jQuery 1.4.2, который всегда возвращал данные, даже из кеша); так что я просто хочу убедиться, что я правильно с этим справляюсь. (Не хочу дойти до конца и потом понять, что я должен был сделать это по-другому).