Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » js: подкачка ответа страницы

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2

Открыть новую тему     Написать ответ в эту тему

Sutar



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
вот код
 

Код:
<script>
function showContent(link) {
    var cont = document.getElementById("contentBody");
    cont.innerHTML = "<div>Идет загрузка...</div>";
    var http = new XMLHttpRequest();
    
    if(http) {
        http.open("GET", link);
        http.onreadystatechange = function() {
                if(http.readyState == 4) {
                    cont.innerHTML = http.responseText;
                }
        }
        http.send(null);
    }
}
</script>
 
<input onclick="showContent('add1.php?id=13')" type="button" value="Страница 1">
<input onclick="showContent('add21.php')" type="button" value="Страница 2">
<input onclick="showContent('add2.php')" type="button" value="Страница 3">
 
<div id="contentBody"></div>
 

 
скрипт получает и выводит содержания страниц которые адресованы по кнопкам
проблема состоит в том что не могу сделать проверку на сатус страницы
например если добавить
 

Код:
if(http.status == 200)

постоянно в браузере ошибки...
но если писать
 

Код:
cont.innerHTML = http.status;

то получаем 200 или 404 (в зависимости от ответа сервера на странице)
 
но как тогда сделать проверку if(http.status == 200) ???
 
 
для быстрого поиска

Всего записей: 1150 | Зарегистр. 15-08-2011 | Отправлено: 21:09 20-06-2013 | Исправлено: Sutar, 21:12 20-06-2013
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sutar

Цитата:
например если добавить

в какую часть кода?
 

Цитата:
постоянно в браузере ошибки...  

какие?

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 21:12 20-06-2013
Sutar



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Cheery

Код:
...
http.onreadystatechange = function() {  
                if(http.status == 200) {...

ошибка

Код:
JavaScript - http://servert
Timeout thread: delay 256 ms
Uncaught exception: ReferenceError: Security violation
Error thrown at line 91, column 4 in connects() in http://server/t:
    http.send(null);
JavaScript - http://server/t
Unknown thread
Uncaught exception: ReferenceError: Undefined variable: in_array
Error thrown at line 39, column 4 in <anonymous function: http.onreadystatechange>() in http://server/t:
    if(in_array(200, http.status))
 

 
но ошибка создается как и на

Код:
if(in_array(200, http.status))

так и

Код:
 if(http.status == 200)

Всего записей: 1150 | Зарегистр. 15-08-2011 | Отправлено: 21:15 20-06-2013
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sutar

Код:
if(http.readyState == 4) {
   if(http.status == '200')  
      cont.innerHTML = http.responseText;  
}

 

Цитата:
Undefined variable: in_array  

нет такой функции по умолчанию в js

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 21:16 20-06-2013 | Исправлено: Cheery, 21:17 20-06-2013
Sutar



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Cheery

Код:
JavaScript - http://server/t
Timeout thread: delay 256 ms
Uncaught exception: ReferenceError: Security violation
Error thrown at line 91, column 4 in connects() in http://server/t:
    http.send(null);
JavaScript - http://server/t
Unknown thread
Uncaught exception: [object DOMException]
Error thrown at line 39, column 4 in <anonymous function: http.onreadystatechange>() in http://server/t:
    if(http.status == '200')
 

Всего записей: 1150 | Зарегистр. 15-08-2011 | Отправлено: 21:22 20-06-2013
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sutar
не повторяйтесь...  
http.status можно смотреть только после  

Цитата:
if(http.readyState == 4)



----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 21:25 20-06-2013
Sutar



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Cheery

Код:
JavaScript - http://q-top.net.ua/t
Timeout thread: delay 256 ms
Uncaught exception: ReferenceError: Security violation
Error thrown at line 93, column 4 in connects() in http://q-top.net.ua/t:
    http.send(null);
 

 
наверное http.send(null); нужно ставить если статус страницы == 200?

Всего записей: 1150 | Зарегистр. 15-08-2011 | Отправлено: 21:30 20-06-2013
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sutar

Цитата:
наверное http.send(null); нужно ставить если статус страницы == 200?

?? вы сначала отправляете данные, а потом следите за статусом полученных данных
и никак наоборот.
 
вы совсем не понимаете, как это работает - разберитесь.
 
далее.. ошибка
Цитата:
Uncaught exception: ReferenceError: Security violation  
срабатывает , скорее всего, тогда, когда вы пытаетесь сделать запрос не на тот домен, с которого загружена страница.
 


----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 21:33 20-06-2013
Sutar



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Cheery

Цитата:
вы пытаетесь сделать запрос не на тот домен

функция работает только по домену на котором работает скрипт?

Всего записей: 1150 | Зарегистр. 15-08-2011 | Отправлено: 21:38 20-06-2013
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sutar

Цитата:
функция работает только по домену на котором работает скрипт?

в общем случае - да.
http://habrahabr.ru/post/120336/
http://javascript.ru/ajax/cross-domain-scripting

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 21:45 20-06-2013
Sutar



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Cheery
по 2-рой ссылке пришла идея))
и ещё такой вопрос
если мы получаем данные с другой страницы с помощью js и произошла любая ошибка но мы не получили то что хотели
http.responseText будет null или всё-же чтото присвоит?

Всего записей: 1150 | Зарегистр. 15-08-2011 | Отправлено: 23:36 20-06-2013
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sutar

Цитата:
http.responseText будет null или всё-же чтото присвоит?

до него даже не дойдет.
 
нужно использовать  
try {}
catch{}

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 23:55 20-06-2013
Sutar



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ещё 1 вопрос, когда страница и файл в кодировке windows-1251
но при подкачке текста с js, появляются такие символы: &#65533;&#65533;
 
как можно исправить это?

Всего записей: 1150 | Зарегистр. 15-08-2011 | Отправлено: 17:52 08-02-2014 | Исправлено: Sutar, 17:52 08-02-2014
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sutar
перекодировать передаваемый текст в нужную кодировку.
либо использовать уникод на странице.

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 23:44 08-02-2014
Sutar



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Cheery

Цитата:
перекодировать передаваемый текст в нужную кодировку.  

Спасибо.
 
Помогло:

Код:
header("Content-Type: text/plain; charset=windows-1251");

Всего записей: 1150 | Зарегистр. 15-08-2011 | Отправлено: 18:38 09-02-2014 | Исправлено: Sutar, 20:20 09-02-2014
Sutar



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Почему если использовать код так:
 

Код:
var http = new XMLHttpRequest();
 
function OpenHttpRequest(page, post_name, post_id) {
    if(http) {
        http.open("POST", page);
        http.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
        http.send(post_name + "=" + encodeURIComponent(post_id));
        
        http.onreadystatechange = function() {
            if(http.readyState == 4) {return http.responseText;}
        }
    }
}
 
function cart(page, post, id) {
        var res = OpenHttpRequest(page, post, id);
        
        if(res != 1) {
            alert(http.responseText);
            act = 0;
            return false;
        }
    return true;
}
 
cart("index.php", "page", "3");
 

 
то не работает?
т.е. не работает проверка if(res != 1)....
в результате страницы, res равен 1

Всего записей: 1150 | Зарегистр. 15-08-2011 | Отправлено: 20:18 18-02-2014 | Исправлено: Sutar, 20:18 18-02-2014
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sutar

Цитата:
то не работает?  

потому, что запрос выполняется асинхронно.
 

Цитата:
if(http.readyState == 4) {return http.responseText;}  

куда вы его возвращаете?

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 22:09 18-02-2014
Sutar



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Cheery

Цитата:
куда вы его возвращаете?

в

Цитата:
function cart(page, post, id) {  
        var res = OpenHttpRequest(page, post, id);  


Всего записей: 1150 | Зарегистр. 15-08-2011 | Отправлено: 20:32 19-02-2014
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sutar

Цитата:
var res = OpenHttpRequest

если бы..  
вы возвращаете в
Цитата:
http.onreadystatechange = function() {  

данная функция вызывается по изменению состояния загрузки, почитайте что такое асинхронный обмен данными.

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 21:47 19-02-2014
Sutar



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Cheery
я сделал так
 

Код:
var act = 0;
var http = new XMLHttpRequest();
 
function OpenHttpRequest(page, post_name, post_id, func) {
    if(http) {
        http.open("POST", page);
        http.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
        http.send(post_name + "=" + encodeURIComponent(post_id));
        
        http.onreadystatechange = function() {
            if(http.readyState == 4) {
                return func(http.responseText);
            }
        }
    }
    return -1;
}
 
function cart(page, post, id) {
    if(act == 0) {
        act = 1;
        
        OpenHttpRequest(page, post, id, function(res) {
            if(res == 1) {
                return location.reload(true);
            }
        });
        
        act = 0;
    }
    return false;
}

 
будет хорошо работать? вроде работает не плохо.

Всего записей: 1150 | Зарегистр. 15-08-2011 | Отправлено: 22:35 19-02-2014
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2

Компьютерный форум Ru.Board » Интернет » Web-программирование » js: подкачка ответа страницы


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru