function ajax_request(params,target) {
if (window.location.href.indexOf("www") != -1) {
ajaxGet("http://www.somehost.ru/"+params,target);
} else {
ajaxGet("http://somehost.ru/"+params,target);
}
}///////////////////////////////////////////////////////////////////////
function ajaxGet(url,target)
{
if (window.XMLHttpRequest) {
req = new XMLHttpRequest();
req.open("GET", url, true);
req.overrideMimeType('text/plain; charset=windows-1251');
req.onreadystatechange = function() {ajaxDone(target);};
req.send(null);
} else if (window.ActiveXObject) {
req = new ActiveXObject("Microsoft.XMLHTTP");
if (req) {
req.open('GET', url, true);
req.onreadystatechange = function() {ajaxDone(target);};
req.send();
}
}
}
///////////////////////////////////////////////////////////////////////
function ajaxDone(target) {
if (req.readyState == 4) {
if (req.status == 200) {
var Result = req.responseText;
if (Result != '') {
document.getElementById(target).innerHTML = "";
document.getElementById(target).innerHTML = Result;
}
} else {
document.getElementById(target).innerHTML = "AJAX Error:\n" +
req.statusText;
}
}
}
AJAX как правильно задавать onreadystatechange
[HTML]<script type="text/javascript" language="javascript">
function makeRequest(url) {
var http_request = false;
if (window.XMLHttpRequest) { // Mozilla, Safari, ...
http_request = new XMLHttpRequest();
if (http_request.overrideMimeType) {
http_request.overrideMimeType('text/xml');
// Читайте ниже об этой строке
}
} else if (window.ActiveXObject) { // IE
try {
http_request = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
http_request = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {}
}
}
if (!http_request) {
alert('Не вышло :( Невозможно создать экземпляр класса XMLHTTP ');
return false;
}
http_request.onreadystatechange = alertContents;
http_request.open('GET', url, true);
http_request.send(null);
}
function alertContents(http_request) {
alert(http_request.readyState);
if (http_request.readyState ==4) {
alert(http_request.responseText)
}
}
</script>
<a href="#"
onclick="makeRequest('test.txt')">
Сделать запрос
</a>[/HTML]
в итоге выдается ошибка, дело все в http_request.onreadystatechange = alertContents;
по идее я присваиваю запросу ссулку на функцию которая будет его обрабатывать. Этот вариант не работает.
Но почему то работает если написать так http_request.onreadystatechange = function() { alertContents(http_request); };
обьясните плизз почему в чем ошибка в первом варианте и что собственно значит правая часть второго варианта:) спасибо
Или так: http_request.onreadystatechange = alertContents();
Функция должна быть со скобками обязательно.
не, не работает, а что киньте плиз ссылку на про анонимыне функции в яве)))
Далее вам необходимо решить, что вы будете делать после получения ответа сервера. На этом этапе вам необходимо указать объекту, какая JavaScript функция будет обрабатывать ответ. Это делается путем присваивания свойству onreadystatechange имени JavaScript функции, которую вы собираетесь использовать:
http_request.onreadystatechange = nameOfTheFunction;
Заметьте, что после названия функции нет скобок и не указано параметров, потому что вы просто присваиваете ссылку на функцию, а не вызываете ее. К тому же, вместо указания имени функции, вы можете использовать возможность JavaScript объявлять функции на лету (так называемые «анонимные функции») и указывать действия, которые тотчас же будут обрабатывать ответ:
http_request.onreadystatechange = function(){
// какой-нибудь код
};
как видно из нее должен работать и еще вариант http_request.onreadystatechange = alertContents;
хмм, странно, странно
на всякий случай: www.host.ru и host.ru для него оказывается разные вещи :D
Код:
Anton Kharlamov если нужно передать в callback функцию параметры, то можно использовать переменные из глобальной зоны видимости (
Цитата: Anton Kharlamov
не, не работает, а что киньте плиз ссылку на про анонимыне функции в яве)))
:mad:
http://phpclub.ru/talk/showthread.php?s=&threadid=50884&rand=2