Я новичок в этом сайте и успешно использую общий доступ к ресурсам HTML5 (CORS) для отправки данных на мой сервер. Я только недавно пытался включить GET в это, так как мы пытаемся, чтобы все наши сообщения не зависели от библиотеки JavaScript. При этом я столкнулся со странной проблемой, которая кажется несколько исправляемой для Firefox, но все еще ведет себя неправильно во всех браузерах WebKit. По сути, все, что возвращает статус <200 или> 300, просто приходит как статус 0. Это делает почти невозможным выполнение обработки ошибок.
Для Firefox я могу поместить произвольную строку в конец запроса, чтобы предотвратить его кэширование; тем самым фиксируя 304 как минимум. Это, однако, не работает для меня в Chrome / Safari. Вот пример моего кода:
xhr_request: function(type,url, data, callbacks, form){
var form = (typeof(form)!=="undefined")?form:null;
var xhr = new XMLHttpRequest();
var response;
data = com.ticommunity.obj_to_string(data);
xhr.open(type, url, true);
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xhr.setRequestHeader("X-TxId", com.ticommunity.keyGen());
xhr.withCredentials = true;
xhr.send(data);
xhr.onreadystatechange = function(){
if(xhr.readyState == 4){
if(xhr.status == 200){
response = xhr.responseText;
com.ticommunity.comm.request_callback(response, callbacks, form);
}else{`//****this is where the 0 Status keeps coming up***`
response = xhr.status;
com.ticommunity.comm.request_callback(response, callbacks, form);
}
}
}
}
Кто-нибудь еще сталкивался с чем-то подобным и придумывал обходной путь? Я просто делаю что-то глупое с моей стороны? Любая помощь с благодарностью.
РЕДАКТИРОВАТЬ: я понял, 0, это то, что должно произойти в соответствии со спецификацией, но мне действительно нужно иметь возможность ловить в этих ситуациях и делать некоторые другие обработки.