Форум русскоязычного сообщества Ubuntu


Считаете, что Ubuntu недостаточно дружелюбна к новичкам?
Помогите создать новое Руководство для новичков!

Автор Тема: Помгите разобраться с javascript и ajax  (Прочитано 835 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Axa-Ru

  • Автор темы
  • Гость
Помгите разобраться с javascript и ajax
« : 06 Апрель 2012, 20:13:26 »
Друзья, никак не разберусь с ajax.

Задача такая.
Нужно на javascript написать функцию, которая делает запрос к transmission и получает ответ.
Насколько я понимаю весь ajax представляет собой  класс XMLHttpRequest.

Я хочу отправить на сервер transmission, например, вот такой запрос:
{"method":"session-stats"}Кроме того, нужно передать в запросе заголовок с идентификатором сессии
'X-Transmission-Session-Id: mnTDXReMBc3PkAa1flYVbHmoAVfq1UmNiFe6uW1aC9Q4TXD4'
Куда и как я дожен добавить эти данные в запрос?
        xhr.open('GET','http://192.168.1.65:8181/transmission/rpc', 'true', 'admin','password1');
        xhr.send();
« Последнее редактирование: 06 Апрель 2012, 20:16:24 от Axa-Ru »

Оффлайн Olej

  • Забанен
  • Активист
  • *
  • Сообщений: 884
    • Просмотр профиля
Re: Помгите разобраться с javascript и ajax
« Ответ #1 : 06 Апрель 2012, 21:15:34 »
Друзья, никак не разберусь с ajax.

Задача такая.
Нужно на javascript написать функцию, которая делает запрос к transmission и получает ответ.
Насколько я понимаю весь ajax представляет собой  класс XMLHttpRequest.

http://www.books.ru/books/ajax-dlya-professionalov-477695/?show=1
http://www.books.ru/books/ajax-i-php-razrabotka-dinamicheskikh-veb-prilozhenii-429052/?show=1
- там достаточно внятно и понятно всё расписано, с примерами.

Axa-Ru

  • Автор темы
  • Гость
Re: Помгите разобраться с javascript и ajax
« Ответ #2 : 06 Апрель 2012, 21:18:08 »
Спасибо. Читаю, но хотябы пальцем ткните на похожий пример. или на страницу в книге.

Оффлайн Olej

  • Забанен
  • Активист
  • *
  • Сообщений: 884
    • Просмотр профиля
Re: Помгите разобраться с javascript и ajax
« Ответ #3 : 06 Апрель 2012, 21:30:55 »
Спасибо. Читаю, но хотябы пальцем ткните на похожий пример. или на страницу в книге.

Я не помню :(
Я был научным редактором обеих этих книг от издательства, и помню, что они исчерпывающе понятно описывали технологию Ajax.
Если я найду конкретнее решение, я вам сюда отпишу.


Пользователь решил продолжить мысль 06 Апрель 2012, 21:33:38:
Нужно на javascript написать функцию, которая делает запрос к transmission и получает ответ.

Кстати, попутно...

По JavaScript рекомендую книгу:
http://www.books.ru/books/javascript-podrobnoe-rukovodstvo-5-e-izdanie-555423/?show=1
(я её тоже редактировал, но рекомендую не поэтому, а потому, что это одна из лучших книг по JavaScript)
Цитировать
Лучшая книга по программированию в целом, которая мне когда либо попадалась!
с того же URL.


Пользователь решил продолжить мысль 06 Апрель 2012, 21:38:57:
Насколько я понимаю весь ajax представляет собой  класс XMLHttpRequest.

Обратите внимание для начала (для отладки): всё, что вы хотите получить от Ajacs - достигается и просто javascript без всякого Ajacs, потом вы всего лишь переписываете это под Ajacs, и оно работает намного эффективнее и дружественнеее.
« Последнее редактирование: 06 Апрель 2012, 22:15:29 от Olej »

Axa-Ru

  • Автор темы
  • Гость
Re: Помгите разобраться с javascript и ajax
« Ответ #4 : 06 Апрель 2012, 21:46:18 »
Если найдете, с оказией запостите.

В любом случае спасибо.

Оффлайн lukinfore

  • Новичок
  • *
  • Сообщений: 33
    • Просмотр профиля
Re: Помгите разобраться с javascript и ajax
« Ответ #5 : 08 Апрель 2012, 01:26:29 »
'http://192.168.1.65:8181/transmission/rpc'
https://trac.transmissionbt.com/browser/trunk/extras/rpc-spec.txt
Каким боком сюда ajax относится, если не секрет? Сервер в json принимает и в json выдает ответ.
lukinfore@:~$curl http://localhost:9091/transmission/rpc
<h1>409: Conflict</h1><p>Your request had an invalid session-id header.</p><p>To fix this, follow these steps:<ol><li> When reading a response, get its X-Transmission-Session-Id header and remember it<li> Add the updated header to your outgoing requests<li> When you get this 409 error message, resend your request with the updated header</ol></p><p>This requirement has been added to help prevent <a href="http://en.wikipedia.org/wiki/Cross-site_request_forgery">CSRF</a> attacks.</p><p><code>X-Transmission-Session-Id: TUdD9bTU7cU39DS3m7ge1pLvsdWIzg3r80jjkpoLRcl4pmuI</code></p>lukinfore@:~$
lukinfore@:~$curl -H "X-Transmission-Session-Id: TUdD9bTU7cU39DS3m7ge1pLvsdWIzg3r80jjkpoLRcl4pmuI" -d '{"method":"session-stats"}' http://localhost:9091/transmission/rpc
{"arguments":{"activeTorrentCount":148,"cumulative-stats":{"downloadedBytes":68211996961,"filesAdded":202,"secondsActive":3766171,"sessionCount":117,"uploadedBytes":140202899080},"current-stats":{"downloadedBytes":0,"filesAdded":0,"secondsActive":11438,"sessionCount":1,"uploadedBytes":310709590},"downloadSpeed":0,"pausedTorrentCount":0,"torrentCount":148,"uploadSpeed":30720},"result":"success"}
lukinfore@:~$


Axa-Ru

  • Автор темы
  • Гость
Re: Помгите разобраться с javascript и ajax
« Ответ #6 : 08 Апрель 2012, 01:45:23 »
Каким боком сюда ajax относится, если не секрет? Сервер в json принимает и в json выдает ответ.
Я только начал изучать.
Asynchronous Javascript And Xml - технология для взаимодействия с сервером без перезагрузки страниц
Основной метод через объект XMLHttpRequest.
Вот отсюда и ajax.

Если я ошибаюсь, то пожалуйста поправьте меня.
« Последнее редактирование: 08 Апрель 2012, 01:50:47 от Axa-Ru »

Оффлайн lukinfore

  • Новичок
  • *
  • Сообщений: 33
    • Просмотр профиля
Re: Помгите разобраться с javascript и ajax
« Ответ #7 : 08 Апрель 2012, 01:58:16 »
А-а, то есть нужна статистика трансмишна на гипотетической странице с аяксом? Тогда врядли помогу, разве только гуглом
http://www.w3.org/TR/XMLHttpRequest/#the-setrequestheader-method
xhr.setRequestHeader('X-Transmission-Session-Id', 'blablabla')не?
и в спеках они POST рекомендуют, хотя GET тоже вроде работает
« Последнее редактирование: 08 Апрель 2012, 02:01:27 от lukinfore »

Axa-Ru

  • Автор темы
  • Гость
Re: Помгите разобраться с javascript и ajax
« Ответ #8 : 09 Апрель 2012, 21:44:21 »
Разобрался.
Трудность была в том, что transmission вщзвращает значение "409 Conflict" в состоянии readyState равном не 4, а 3.
       var xhr = new XMLHttpRequest();

        xhr.onreadystatechange = function() {
                    if(xhr.readyState == 3) {
                        if (xhr.status == 409) {
                            container.xSid = xhr.getResponseHeader('X-Transmission-Session-Id');
                            xhr.abort();
                            requestTransmission ( Request );
                        }
                    }
                    if(xhr.readyState == 4) {
                        if (xhr.status == 200) {
                            log.text = xhr.responseText;
                        }
                    }
                }
        xhr.open('POST','http://'+ container.domain + ':' + container.port + '/transmission/rpc', 'true', container.user, container.password);
        xhr.setRequestHeader('X-Transmission-Session-Id', container.xSid);
        xhr.send(Request);
Спасибо всем кто помог мне найти правильное решение.

« Последнее редактирование: 09 Апрель 2012, 23:30:59 от Axa-Ru »

 

Страница сгенерирована за 0.073 секунд. Запросов: 25.