|
|
|
| Всем доброго времени суток!
Прописал в странице вот такой код:
<script language="javascript">
var req = null;
if (window.XMLHttpRequest) { req = new XMLHttpRequest(); }
else if (window.ActiveXObject) {
try { req = new ActiveXObject(\'Msxml2.XMLHTTP\') } catch (e) {
try { req= new ActiveXObject(\'Microsoft.XMLHTTP\') } catch (e) {}
}
}
function handleResponse() {
try{
if((req.readyState == 4) && (req.status == 200)){
var response = req.responseText;
document.getElementById("answer").innerHTML = response;
}
} catch(e){}
finally{}
}
/////////
function send(txt) {
document.getElementById("answer").innerHTML ="Подождите...";
req.open("GET", txt);
req.onreadystatechange = handleResponse;
req.send();
}
</script>
|
вписал в страницу ссылку
<a href="?act=edit&id=2" onclick="send(this.href);return false;">редактировать</a>
|
и контейнер для вывода результата
в Опере все работает нормально, без обновления страницы идет запрос на ?act=edit&id=2, выводится текст "Подождите..." и через некоторое время на его месте появляется запрошеный контент.
В IE выводится надпись "Подождите...", уходит запрос и больше ничего не происходит. "Подождите..." висит, пока не обновишь страницу. Какой-то косяк в сценарии или вообще нужно искать кроссбраузерный эквивалент? | |
|
|
|
|
|
|
|
для: amigo62
(20.12.2008 в 14:08)
| | Попрбуйте
req.open("GET", txt, true);
req.onreadystatechange = handleResponse;
req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=utf-8");
req.send(null);
| у меня как то была такая проблемка | |
|
|
|
|
|
|
|
для: Николай2357
(20.12.2008 в 16:24)
| | Исправил. Ничего не изменилось :( | |
|
|
|
|
|
|
|
для: amigo62
(20.12.2008 в 17:12)
| | Вот этот попробуйте. Вроде не подводил.
<script type="text/javascript">
var req = Create();
function Create()
{
if(navigator.appName == "Microsoft Internet Explorer")
req = new ActiveXObject("Microsoft.XMLHTTP");
else
req = new XMLHttpRequest();
return req;
}
function send()
{
req.open('post', 'test.php' , true );
req.onreadystatechange = Refresh;
req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=utf-8");
req.send();
}
function Refresh()
{
var a = req.readyState;
if ( a == 4 )
window.document.getElementById('answer').innerHTML = req.responseText;
}
</script>
<div id="answer">
</div>
<a href="?" onclick="send();return false;">редактировать</a>
|
test.php
<?
echo "Вроде работает...";
|
| |
|
|
|
|
|
|
|
для: Николай2357
(20.12.2008 в 18:43)
| | дебаггер показывает ошибку в строке
req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=utf-8");
|
странно. И содержимое загружает как страницу, а не как элемент | |
|
|
|
|
|
|
|
для: amigo62
(20.12.2008 в 19:25)
| | А у Вас кодировка то какая? У меня под утф давным давно работает и ни одного сбоя не было. | |
|
|
|
|
|
|
|
для: Николай2357
(20.12.2008 в 20:07)
| | Не понял, а как кдировка влияет? Можете пояснить подробнее, мне важно понять эту схему? | |
|
|
|
|
|
|
|
для: amigo62
(20.12.2008 в 20:40)
| | Вот, специально для Вас тык
А кодировка, если Вы не знаете что такое, наверняка у Вас виндовская. Поменяйте в моём скрипте utf-8 на windows-1251 и попробуйте. Я в винде не работаю, за результат не ручаюсь. | |
|
|
|
|
|
|
|
для: Николай2357
(20.12.2008 в 20:44)
| | спасибо. да, у меня ср1251 | |
|
|
|
|
|
|
|
для: amigo62
(20.12.2008 в 21:03)
| | Вобщем когда пытаюсь передать урл как переменную, начинаются мороки. | |
|
|
|
|
|
|
|
для: amigo62
(20.12.2008 в 21:27)
| | Надо кодировать урл, тогда будет норм. Мороки так же возникнут, если Вы захотите передать амперсанд или плюс допустим Не пройдёт прямая передача скрипта, да и много еще тонкостей. В моём примере просто голый запрос, по этому Вам надо еще подстроить его под свои нужды. Если нет желания делать самому, юзайте jQuery или другой фреймворк. Мне это как то не по нутру, потому что из за простенького запроса таскать 40 - 100kb груза как то не чесно по отношению к юзеру... | |
|
|
|
|
|
|
|
для: Николай2357
(21.12.2008 в 06:05)
| | Нет, пользоваться готовеньким - это не моё :)
Ваш ваиант работает и в опере, и в ИЕ. А вот если исправить чуть:
<script type="text/javascript">
var req = Create();
function Create()
{
if(navigator.appName == "Microsoft Internet Explorer")
req = new ActiveXObject("Microsoft.XMLHTTP");
else
req = new XMLHttpRequest();
return req;
}
function send(txt)
{
req.open('post', txt , true );
req.onreadystatechange = Refresh;
req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=win-1251");
req.send();
}
function Refresh()
{
var a = req.readyState;
if ( a == 4 )
window.document.getElementById('answer').innerHTML = req.responseText;
}
</script>
<div id="answer">
</div>
<a href="?" onclick="send('http://localhost/1.txt');return false;">редактировать</a>
|
в опере работать отказывается, только обновляет страницу. Пытаюсь вникнуть в спецификацию...)) | |
|
|
|
|
|
|
|
для: amigo62
(21.12.2008 в 11:44)
| | Понял в чем дело.
message: Security violation
|
страница лежала на диске, а запрос отправлялся на хост.
Когда выложил страницу на хост, стало все ок)))
Николай2357, спасибо за разъяснения и примеры:) | |
|
|
|
|
|
|
|
для: amigo62
(21.12.2008 в 12:09)
| | Оказывается, еще не все :(
function Refresh(){
if ((req.readyState == 4) && (req.status == 200))
document.getElementById("answer").innerHTML = req.responseText;
}
|
в выделенной строке ИЕ упрямо выдает ошибку.
Системная ошибка -1072896658
происходит это только на хостинге. локально все ок | |
|
|
|