У меня есть функция, которая получает запросы, используя простой старый JS.Статус запроса xmlhttp всегда возвращает 0
function get(url,funct){
var xmlhttpget = (window.XMLHttpRequest) ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP");
xmlhttpget.onreadystatechange=function(){
if (xmlhttpget.readyState==4 && xmlhttpget.status==200){
funct(xmlhttpget.responseText);
}
}
xmlhttpget.open("GET",url,true);
xmlhttpget.send();
}
Я использую это так:
ГЭТ (URL, функции (соответственно) {window.alert (соответственно);});
Когда моя функция обратного вызова перестала работать я изменил мою get()
функции следующего для отладки:
function get(url,funct){
var xmlhttpget = (window.XMLHttpRequest) ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP");
xmlhttpget.onreadystatechange=function(){
window.alert("ready state: "+xmlhttpget.readyState+" // status: "+xmlhttpget.status);
if (xmlhttpget.readyState==4 && xmlhttpget.status==200){
window.alert("responded...");
funct(xmlhttpget.responseText);
}
}
window.alert(url);
xmlhttpget.open("GET",url,true);
xmlhttpget.send();
}
С этим я обнаружил, что во время каждого readystate изменить readystate будет прогрессировать от 1 до 2 до 4 , но статус всегда остается равным 0, поэтому мой callback никогда не вызывается, однако, когда я копирую предупрежденный URL-адрес в браузер, он работает нормально.
Что происходит? Является ли мой браузер кешированием страницы? Как я могу его исправить (установить определенный заголовок на запрошенной странице с помощью php?)?
О, не уверен, что это актуально, но страница, вызывающая функцию, находится внутри фрейма, у родительского документа которого есть тот же файл JavaScript.
Используйте библиотеку, такую как jQuery для запросов ajax. Это избавляет вас от многих головных болей. – TiMESPLiNTER
Да, но я ничего не узнал: P –
@TiMESPLiNTER: Библиотеки не нужны. XHR достаточно прост. –