добавил на сайт немного ajax'a
(скажем панель навигации в магазине)
но ИНОГДА возникает проблеммы, javascript пишет error
status : 404 - not found,
что значит иногда ?
при клике на ссылку ajax может отработать нормально, а может выдать ошибку
вопрос по каким причинам она может возникнуть, и есть возможные пути решения.
(ps совсем новичек в ajax'e)
код ajax'a приведен ниже
// Код вызова
var call_code;
// Объект класса XMLHttpRequest
var xmlHttp;
function CallServer(item,url,reload)
{
// Если reload - false - то страница загружается в объект только если innerHTML у него пустой
// Запоминаем код вызова
call_code=item;
// Если данных ещё нет, то подгружаем их
if ((call_code!='') &&
((document.getElementById(item).innerHTML=='' || reload))
)
{
// Если имеем дело не с InternetExplorer
if (window.XMLHttpRequest) {
xmlHttp = new XMLHttpRequest();
// Открыть соединение с сервером
xmlHttp.open("GET", url, true);
// Установить функцию для сервера, которая выполнится после его ответа
xmlHttp.onreadystatechange = updatePage;
// SПередать запрос
xmlHttp.send(null);
}
// Если имеем дело с InternetExplorer(он объект XMLHttpRequest имеет
// в виде active-X компонента XMLHTTP)
else if (window.ActiveXObject)
{
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
// Установить функцию для сервера, которая выполнится после его ответа
xmlHttp.onreadystatechange = updatePage;
// Открыть соединение с сервером
xmlHttp.open("GET", url, true);
// SПередать запрос
xmlHttp.send();
}
// Включить индикатор загрузки
loadPage();
}
}
function updatePage() {
if (xmlHttp.readyState == 4) {
if (xmlHttp.status == 200) {
// Если код ошибки - 200 подгружем ответ сервера в элемент HTML с
// ID=call_code
document.getElementById(call_code).innerHTML = xmlHttp.responseText;
} else {
alert("Не удалось получить данные:\n" + xmlHttp.statusText);
}
}
}
да просто тут статейка была про ajax,
(http://perpetum-mobile.ru/articles/cookbook/ajax/) я почитал и
решил, думаю, нужно воспользываться полученными знаниями,
ну и вот воспользывался на свою голову ((
зы а можно попросить слово любое заченить каким-нибудь более конкрет. термином ?
Это значит, что страница которую ты пытаешься загрузить не существует.
Попробуй вывести для отладки через alert url подгружаемой страницы.
---------------------
function CallServer(item,url,reload)
{
//----------!!!!!!!!!!!!!!!!!-----------
alert(url);
//----------!!!!!!!!!!!!!!!!!-----------
// Если reload - false - то страница загружается в объект только если innerHTML у него пустой
// Запоминаем код вызова
call_code=item;
---------------------
Скорее всего, по какой-то причине в эту функцию передаётся url несуществующей страницы. Проблема в коде вызова.
> Возьми любой js-фреймворк, именно это имелось в виду.. А уж какой, решать тебе: prototype, jQuery, DoJo, Yahoo! - выбирай любой :)
Всецело поддерживаю.
Несмотря на то, что этот код прекрасно работает (там просто нечему ломаться :-)), заметка носит скорее ознакомительно-информационный характер, если есть желание углубить в проблему - любой из указанных фреймворков решает.
Автору топика: буду признателен, если в jabber ты мне расскажешь о деталях столь странного поведения скрипта. Не исключено, что и в этих нескольких десятках строк кода затаился мерзкий баг :-).
что же это ты про mootools (http://mootools.net) забыл? библиотека эффектов там рвет script.aculo.us (который уже почти что синоним слова prototype) и dojo в клочья. и размер у нее маленький, что тоже радует.