Простейший пример AJAX не хочет работать в IE 9 (с FF и Оперой все ок), возможно проблема с инициализацией XmlHTTP.
Хтмл код:
<html>
<head>
<script type="text/javascript" src="http://kohana.loc/media/js/ajax/request.js"></script>
</head>
<body>
<div id="status"></div>
<input type='text' id='myid'><br>
<input type="button" value="тыц" onClick="start()">
</body>
</html>
request.js:
function getXmlHttp() {
var xmlhttp;
try {
xmlhttp = new ActiveXObject("Msxm12.XMLHTTP");
} catch (e) {
try {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch (E) {
xmlhttp = false;
}
}
if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
xmlhttp = new XMLHttpRequest();
}
return xmlhttp;
}
function start() {
var req = getXmlHttp();
var statusElem = document.getElementById('status');
statusElem.innerHTML = '<img src="/media/images/animation/loading.gif">';
var text = document.getElementById('myid').value;
query = 'txt=' + encodeURIComponent(text);
req.onreadystatechange = function () {
if (req.readyState == 4) {
var b = req.responseText;
statusElem.innerHTML = b;
}
}
req.open('POST', 'http://kohana.loc/ajax.php', true);
req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=utf-8");
req.send(query);
}
Покажите где ошибка
Спустя 6 минут, 16 секунд (21.02.2012 - 12:31) johniek_comp написал(а):
используй библиотеку ajaxa через джейквери
Спустя 1 час, 18 минут, 52 секунды (21.02.2012 - 13:50) gidrosoldat написал(а):
johniek_comp, тоже об этом думал. JQuery кросбраузерный?
Спустя 23 минуты, 19 секунд (21.02.2012 - 14:13) inpost написал(а):
function createXMLHttp() {
if(typeof XMLHttpRequest != "undefined") {
return new XMLHttpRequest();
} else if(window.ActiveXObject) {
var aVersions = ["MSXML2.XMLHttp.5.0", "MSXML2.XMLHttp.4.0",
"MSXML2.XMLHttp.3.0", "MSXML2.XMLHttp",
"Microsoft.XMLHttp"
];
for (var i = 0; i < aVersions.length; i++) {
try {
var oXmlHttp = new ActiveXObject(aVersions[i]);
return oXmlHttp;
} catch (oError) {
}
}
throw new Error("Error XMLHttp.");
}
}
Попробуй єту инициализацию.
Спустя 1 час, 50 минут, 19 секунд (21.02.2012 - 16:04) gidrosoldat написал(а):
inpost, ноуп. Все равно работать не хочет. Даже индикатор загрузки не появляется.
В Средствах разработчика IE говорит сие:
SCRIPT445: Команда не поддерживается объектом
test, строка 57 символ 1
57 строка это:
P.S. IE любит заблокировать локальные JS скрипты, но тут не тот случай, alert() окна вылетают на ура.
В Средствах разработчика IE говорит сие:
SCRIPT445: Команда не поддерживается объектом
test, строка 57 символ 1
57 строка это:
<input type="button" value="тыц" onClick="start()">
P.S. IE любит заблокировать локальные JS скрипты, но тут не тот случай, alert() окна вылетают на ура.
Спустя 54 минуты, 27 секунд (21.02.2012 - 16:58) inpost написал(а):
Всё пишется маленькими буквами:
onclick="start()"
onclick="start()"
Спустя 2 минуты, 12 секунд (21.02.2012 - 17:00) inpost написал(а):
<input type='text' id='myid'>
Свойства атрибутов пишутся в двойной кавычке, а не одинарной.
Свойства атрибутов пишутся в двойной кавычке, а не одинарной.
Спустя 3 минуты, 17 секунд (21.02.2012 - 17:04) inpost написал(а):
Допустим внутри функции ты пишешь:
statusElem.innerHTML = b;
Хотя что такое "statusElem" ?
Ни я, ни скрипт не знают.
statusElem.innerHTML = b;
Хотя что такое "statusElem" ?
Ни я, ни скрипт не знают.
Спустя 5 минут, 27 секунд (21.02.2012 - 17:09) killer8080 написал(а):
gidrosoldat
а activeX часом не отключены?
а activeX часом не отключены?
Цитата (inpost @ 21.02.2012 - 16:04) |
Допустим внутри функции ты пишешь: statusElem.innerHTML = b; Хотя что такое "statusElem" ? Ни я, ни скрипт не знают. |
Скрипт знает
var statusElem = document.getElementById('status');
Спустя 9 минут, 42 секунды (21.02.2012 - 17:19) inpost написал(а):
gidrosoldat
Выстави тут ссылку, и я сам попробую воспользоваться Аяксом Или постучи в профиль и проверишь рабочий аякс
Выстави тут ссылку, и я сам попробую воспользоваться Аяксом Или постучи в профиль и проверишь рабочий аякс
Спустя 27 минут, 13 секунд (21.02.2012 - 17:46) bodja написал(а):
Шутник однако,
Msxm12.XMLHTTP
Ну ,чтож осталось подождать двеннадцатую версию
Msxm12.XMLHTTP
Ну ,чтож осталось подождать двеннадцатую версию
Спустя 3 часа, 2 минуты, 37 секунд (21.02.2012 - 20:49) Guest написал(а):
inpost, кавычки поправил, "onclick" написал маленькими буквами. Порядок, конечно, должен быть ))
bodja, молодцом, заметил. Но все равно не пашет.
killer8080, все может быть. Я IE не пользуюсь совсем - посмотрю. Хотя если на клик прицепить самую простую функцию с алертом, алерт появляется.
bodja, молодцом, заметил. Но все равно не пашет.
killer8080, все может быть. Я IE не пользуюсь совсем - посмотрю. Хотя если на клик прицепить самую простую функцию с алертом, алерт появляется.
Спустя 1 минута, 7 секунд (21.02.2012 - 20:50) gidrosoldat написал(а):
Перед этим мой пост )
Включил в IE все что связано с ActiveX, все еще не работает.
Включил в IE все что связано с ActiveX, все еще не работает.
Спустя 7 часов, 5 минут, 24 секунды (22.02.2012 - 03:55) inpost написал(а):
Skype: imbalance_hero
Свяжись со мной, проверим твой браузер сначало.
Свяжись со мной, проверим твой браузер сначало.
Спустя 16 часов, 16 минут, 45 секунд (22.02.2012 - 20:12) gidrosoldat написал(а):
inpost, не пришлось. Ударными темпами изучаю JQuery, собрал AJAX запрос на нем и все везде работает (в том числе и в IE)
Спустя 1 час, 1 минута, 48 секунд (22.02.2012 - 21:14) inpost написал(а):
gidrosoldat
Ну да, когда ручками сделать нормально не умеем, всегда ищем костыли
А потом ещё обижаются, а почему нам "так мало платят?"... а чтобы платили, надо учиться, а не жить за счёт костылей.
Ну да, когда ручками сделать нормально не умеем, всегда ищем костыли
А потом ещё обижаются, а почему нам "так мало платят?"... а чтобы платили, надо учиться, а не жить за счёт костылей.
Спустя 1 час, 6 минут, 42 секунды (22.02.2012 - 22:20) ApuktaChehov написал(а):
gidrosoldat - inpost прав. Я когда только начинал, думал, нафиг мне писать все самому, когда можно изучить JQuery быстренько и все буду типа уметь. Но первый же проект показал избыточность. Когда я только ради одного аякса грузил весь JQ. В один момент я понял это и стал учиться.
Так что мы все советуем вам учится.
Так что мы все советуем вам учится.
Спустя 1 час, 56 минут, 8 секунд (23.02.2012 - 00:16) gidrosoldat написал(а):
inpost, ApuktaChehov, я не против учебы. Но следуя вашей логике, вообще от всех фреймворков откажемся. Ведь сколько там функций и классов не ненужных грузятся. Лучше велосипед самому собрать из минимум деталей! Под горку он из-за веса лучше поедет, но если что-то в нем поменять захотим придется самому детальку напильником выпиливать. Вместо того что бы просто какую нибудь гайку подкрутить.
Спустя 26 минут, 24 секунды (23.02.2012 - 00:43) killer8080 написал(а):
Цитата (gidrosoldat @ 22.02.2012 - 23:16) |
но если что-то в нем поменять захотим придется самому детальку напильником выпиливать. |
У меня это вызывает другую ассоциацию, когда тебе нужно пойти закрутить винт, тянешь за собой огромный ящик с инструментами, монтировками, кувалдой, только потому что в этом ящике есть отвертка.
Спустя 4 часа, 56 минут, 5 секунд (23.02.2012 - 05:39) bodja написал(а):
gidrosoldat
Не тех вы бородатых дядек за нос водите ,вот инициализация аякса в исходниках квери
Не тех вы бородатых дядек за нос водите ,вот инициализация аякса в исходниках квери
Цитата |
function createStandardXHR() { try { return new window.XMLHttpRequest(); } catch( e ) {} } function createActiveXHR() { try { return new window.ActiveXObject( "Microsoft.XMLHTTP" ); } catch( e ) {} } // Create the request object // (This is still attached to ajaxSettings for backward compatibility) jQuery.ajaxSettings.xhr = window.ActiveXObject ? /* Microsoft failed to properly * implement the XMLHttpRequest in IE7 (can't request local files), * so we use the ActiveXObject when it is available * Additionally XMLHttpRequest can be disabled in IE7/IE8 so * we need a fallback. */ function() { return !this.isLocal && createStandardXHR() || createActiveXHR(); } : // For all other browsers, use the standard XMLHttpRequest object createStandardXHR; |
Спустя 4 часа, 2 минуты, 16 секунд (23.02.2012 - 09:41) gidrosoldat написал(а):
killer8080, сайт, который сейчас собираю, и так использует jQuery (анимированное меню, переключение табов, информационный баннер в виде движущихся слайдов).
Я думаю, в этом случае вполне оправданно и дальше использовать загруженную и востребованную библиотеку.
В другом конкретном случае (если нужен только AJAX и НИЧЕГО больше) вы будете правы.
bodja, что вы хотели этим кодом показать? Я не совсем понял.
Я думаю, в этом случае вполне оправданно и дальше использовать загруженную и востребованную библиотеку.
В другом конкретном случае (если нужен только AJAX и НИЧЕГО больше) вы будете правы.
bodja, что вы хотели этим кодом показать? Я не совсем понял.
Спустя 1 час, 44 минуты, 9 секунд (23.02.2012 - 11:25) inpost написал(а):
gidrosoldat
Реализация на JS Ajax:
минимум 7 строк, остальное - настройки.
Реализация на jQuery Ajax:
минимум 5 строк + возможные настройки.
Откуда взялись 2 строчки? Кодировка автоматом выставляется внутри библиотеки(!!!) и нужный объект автоматом инициализируется, объект, который я выше дал, а инициализируется простой строчкой: var = getXmlHttp;
Ради этих лживых двух строк - "мы изобретаем велосипед"? Как раз в данном случае jQuery изобрёл велосипед, а точнее переписал стандартные действия на свои, ничем не выиграл.
Вот пример:
Реализация на JS Ajax:
минимум 7 строк, остальное - настройки.
Реализация на jQuery Ajax:
минимум 5 строк + возможные настройки.
Откуда взялись 2 строчки? Кодировка автоматом выставляется внутри библиотеки(!!!) и нужный объект автоматом инициализируется, объект, который я выше дал, а инициализируется простой строчкой: var = getXmlHttp;
Ради этих лживых двух строк - "мы изобретаем велосипед"? Как раз в данном случае jQuery изобрёл велосипед, а точнее переписал стандартные действия на свои, ничем не выиграл.
Вот пример:
function getElementById(id) {
return document.getElementById(id);
}
Спустя 2 часа, 32 минуты, 45 секунд (23.02.2012 - 13:58) gidrosoldat написал(а):
inpost, да я не против разобраться!
Вот собрал все в одном файле, можете даже у себя попробовать :
ajax.php на сервере:
P.S. Пока собирал все в один файл, AJAX совсем перестал работать.
P.S.S. req.responseText пустой приходит.
Вот собрал все в одном файле, можете даже у себя попробовать :
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>AJAX</title>
<style>
.border {
border: 4px solid #b8b8b8;
padding: 10px 15px;
margin: 15px;
}
</style>
<script language="javascript">
function getXmlHttp() {
var xmlhttp;
try {
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch (E) {
xmlhttp = false;
}
}
if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
xmlhttp = new XMLHttpRequest();
}
return xmlhttp;
}
function start() {
var req = getXmlHttp();
var statusElem = document.getElementById('status');
statusElem.innerHTML = 'please wait ...';
var text = document.getElementById('text').value;
query = 'text=' + encodeURIComponent(text);
req.onreadystatechange = function () {
if (req.readyState == 4) {
var response = req.responseText;
statusElem.innerHTML = response;
}
}
req.open('POST', 'http://www.electricpeople.net/ajax.php', true);
req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=utf-8");
req.send(query);
}
function test() {
alert('test');
}
</script>
</head>
<body>
<div class="border">
<div id="status"></div>
<input type="text" id="text"><br>
<input type="button" value="тыц" onсlick="start()">
</div>
</body>
</html>
ajax.php на сервере:
<?php
$text = isset($_POST['text']) ? $_POST['text'] : 'no data';
sleep(1);
echo htmlspecialchars($text);
P.S. Пока собирал все в один файл, AJAX совсем перестал работать.
P.S.S. req.responseText пустой приходит.
Спустя 1 час, 41 минута, 54 секунды (23.02.2012 - 15:40) inpost написал(а):
Это не то, что я давал...
Спустя 6 часов, 14 минут, 41 секунда (23.02.2012 - 21:55) bodja написал(а):
Цитата |
bodja, что вы хотели этим кодом показать? Я не совсем понял. |
Хотел показать что кверивская инициализация ничем не отличается от вашего же примера.
Поэтому говорить там работает - здеся нет .Нет никакого смысла.
ЗЫ насчет примера я тут под носом выкладывал свою функцию,вместе с рекомендациями,почему и что может не работать.
http://phpforum.ru/index.php?showtopic=57758