Модераторы: Sardar, Aliance

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> XMLHttpRequest + POST, Как отослать файл? 
:(
    Опции темы
Irokez
Дата 12.5.2005, 11:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


индеец
***


Профиль
Группа: Участник Клуба
Сообщений: 1180
Регистрация: 20.10.2004

Репутация: 1
Всего: 53



Прошу пример на отсылку данных формы через XMLHttpRequest, есть примеру для GET, а вот для поста нету.
Заранее спасибо.
PM   Вверх
simanyay
Дата 12.5.2005, 11:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Антон Ковалёв
****


Профиль
Группа: Участник
Сообщений: 2053
Регистрация: 22.8.2002

Репутация: нет
Всего: 36



Первая ссылка в Google дала вот это:

Код

var objHTTP, strResult;

objHTTP = new ActiveXObject('Microsoft.XMLHTTP');
objHTTP.Open('POST',"OtherPage.asp",false);
objHTTP.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');

objHTTP.send("id=1&user="+txtUser.value+"&password="+txtPassword.value);

strResult=objHTTP.responseText;



--------------------
«It's better to be a pirate than to join the Navy» — Steve Jobs.
PM MAIL WWW   Вверх
Irokez
Дата 12.5.2005, 12:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


индеец
***


Профиль
Группа: Участник Клуба
Сообщений: 1180
Регистрация: 20.10.2004

Репутация: 1
Всего: 53



уж больно это походит на GET??
PM   Вверх
simanyay
Дата 12.5.2005, 12:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Антон Ковалёв
****


Профиль
Группа: Участник
Сообщений: 2053
Регистрация: 22.8.2002

Репутация: нет
Всего: 36



Я об этом тоже подумал, но ты попробуй. Там в параметрах вроде POST передается. Может объект сам сконвертит.


--------------------
«It's better to be a pirate than to join the Navy» — Steve Jobs.
PM MAIL WWW   Вверх
Irokez
Дата 12.5.2005, 12:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


индеец
***


Профиль
Группа: Участник Клуба
Сообщений: 1180
Регистрация: 20.10.2004

Репутация: 1
Всего: 53



Цитата(simanyay @ 12.5.2005, 12:26)
Я об этом тоже подумал, но ты попробуй. Там в параметрах вроде POST передается. Может объект сам сконвертит.

нее. не работает, в принимающем файле делаю print_r($_POST) и print_r($_GET); ничего не показывает
Добавлено @ 12:43
Цитата(simanyay @ 12.5.2005, 11:31)
objHTTP.Open('POST',"OtherPage.asp",false);

а если поставить тут true тогда вроде работает .. а вот как фйл отправить, не в этой строке же =)
Добавлено @ 12:44
и для больших текстов по-моему тоже не будет работать?
и как сделать чтобы из формы автоматом брались поля?
PM   Вверх
simanyay
Дата 12.5.2005, 13:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Антон Ковалёв
****


Профиль
Группа: Участник
Сообщений: 2053
Регистрация: 22.8.2002

Репутация: нет
Всего: 36



А зачем файл отправлять через XMLHttpRequest? И большие тексты, тоже?


--------------------
«It's better to be a pirate than to join the Navy» — Steve Jobs.
PM MAIL WWW   Вверх
Irokez
Дата 12.5.2005, 13:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


индеец
***


Профиль
Группа: Участник Клуба
Сообщений: 1180
Регистрация: 20.10.2004

Репутация: 1
Всего: 53



Цитата(simanyay @ 12.5.2005, 13:30)
А зачем файл отправлять через XMLHttpRequest? И большие тексты, тоже?

симаняй, надо, это данные из формы
PM   Вверх
Aliance
Дата 12.5.2005, 14:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 55
Всего: 137



Сам не видел с постом.
Если поискать (если таковые все же есть) - может и можно найти.
Есть куча ссылок. В данный момент пишем на эту тему статью. Но сам понимаешь: объем большой, технология новая/непонятная, весна/лето... все дела :-D

Цитата(Irokez @ 12.5.2005, 13:38)
и для больших текстов по-моему тоже не будет работать?

Хм, не уверен, что есть ограничения (в допустимых значениях...)

Цитата(Irokez @ 12.5.2005, 13:38)
и как сделать чтобы из формы автоматом брались поля?

В смысле? form.elem.value...

Цитата(Irokez @ 12.5.2005, 13:38)
вот как файл отправить

Методом send(). Но стоит учитывать, что в ИЕ - аргументов у него (метода) нет; а для остальных браузеров - аргумент null.
Код

function loadXMLDoc(url) {
   // непосредственно для самого объекта XMLHttpRequest
   if (window.XMLHttpRequest) {
       req = new XMLHttpRequest();
       req.onreadystatechange = processReqChange;
       req.open("GET", url, true);
       req.send(null);
   // для IE/Windows ActiveX
   } else if (window.ActiveXObject) {
       isIE = true;
       req = new ActiveXObject("Microsoft.XMLHTTP");
       if (req) {
           req.onreadystatechange = processReqChange;
           req.open("GET", url, true);
           req.send();
       }
   }
}

PM MAIL WWW ICQ Skype   Вверх
Irokez
Дата 12.5.2005, 14:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


индеец
***


Профиль
Группа: Участник Клуба
Сообщений: 1180
Регистрация: 20.10.2004

Репутация: 1
Всего: 53



Aliance спасибо конечно, но как я и написал, примеры с гетом у меня есть.

Цитата(Aliance @ 12.5.2005, 14:04)
Цитата (Irokez @ 12.5.2005, 13:38)
и как сделать чтобы из формы автоматом брались поля?

В смысле? form.elem.value...

у меня есть форма, когда я нажимаю на кнопку сабмит, то данные автоматом отправляются на страницу, мне не надо делать цикл по элементам формы и формировать запрос, того же я хочу и от XMLHttpRequest, неужели у этого элемента нету возможности взять данные из формы автоматом?

а технологии этой кстати уже третий год пошел, так что она и не такая уж и новая smile
PM   Вверх
Aliance
Дата 12.5.2005, 15:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 55
Всего: 137



Цитата(Irokez @ 12.5.2005, 15:39)
не надо

не надо или надо? smile непонял?

Цитата(Irokez @ 12.5.2005, 15:39)
спасибо конечно, но как я и написал, примеры с гетом у меня есть.

а, я думал тебе просто нужен в добавок еще и пример передачи файла...

Цитата(Irokez @ 12.5.2005, 15:39)
а технологии этой кстати уже третий год пошел, так что она и не такая уж и новая

Я имел ввиду план ее "вставки" в браузеры. Из опер, кажется, только 8ая ее поддерживает. Ну это уже оффтопик... (*эх, сейчас опять топик разрастеться до 4 страниц - а толку ноль*)

Цитата(Irokez @ 12.5.2005, 15:39)
неужели у этого элемента нету возможности взять данные из формы автоматом?

Я все равно не понял. Можешь HTML дать, написать комментарии, типа:
Код

<!-- вот тут я хочу получить от туда-то то-то и то-то... -->

PM MAIL WWW ICQ Skype   Вверх
Gregof
Дата 12.5.2005, 16:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 117
Регистрация: 3.6.2004

Репутация: 1
Всего: 12



Цитата(Irokez @ 12.5.2005, 14:39)
неужели у этого элемента нету возможности взять данные из формы автоматом
Нет и никогда не было. Придется самому пробежаться по форме и собрать необходимые значения.
Цитата(Irokez @ 12.5.2005, 12:38)
как файл отправить
Путём собственаручного считывания его с диска и упаковки в xml. Если вторая операция проста, то выполнение первой средствами JS весьма затруднительно.
Я считаю, что посылать файлы подобным способом дело весьма неблагодарное smile
--------------------
Может поздно, может рано, нет у времени стоп-крана... (Чайф)
PM MAIL ICQ   Вверх
Aliance
Дата 12.5.2005, 17:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 55
Всего: 137



Да, нашел. С помощью XMLHttpRequest можно открывать файлы такими методами (точно; неполный, возможно, список):
  • GET
  • POST
  • HEAD

Добавлено @ 17:07
http://jibbering.com/2002/4/httprequest.html
PM MAIL WWW ICQ Skype   Вверх
Sardar
Дата 12.5.2005, 17:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



Цитата(Aliance @ 12.5.2005, 13:04)
Методом send(). Но стоит учитывать, что в ИЕ - аргументов у него (метода) нет; а для остальных браузеров - аргумент null.

Aliance ты не прав, лучше читай ман прежде чем говорить smile Метод принимает либо:
  • строку - в чистом виде отсылает
  • DOM документ - сериализует, отсылает
  • "поток" - сие пока нигде нет, корни может брать от Load and Save спецификации от W3C. Вот отсюда в будущем возможно получиться осылать файлы...
Справочник по интерфейсу:
http://msdn.microsoft.com/library/en-us/xm...asp?frame=false
http://msdn.microsoft.com/library/en-us/xm...asp?frame=false


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Aliance
Дата 12.5.2005, 17:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 55
Всего: 137



Пример:
Код

<script>
<!--
var req;

function loadXMLDoc(url,str)
{
if(window.XMLHttpRequest)
{
req=new XMLHttpRequest();
req.onreadystatechange=processReqChange;
req.open("POST",url,false);
req.send(null);
}
else if(window.ActiveXObject)
{
req=new ActiveXObject("Microsoft.XMLHTTP");
if(req)
{
req.onreadystatechange=processReqChange;
req.open('POST',url,false);
req.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
req.send('&a='+str+'&');
}
}
}

function processReqChange()
{
document.form1.state.value=stat(req.readyState);
ab=window.setTimeout("req.abort();",5000);
if(req.readyState==4)
{
clearTimeout(ab);
document.form1.statusnum.value=req.status;
document.form1.status.value=req.statusText;
if(req.status==200)
document.form1.response.value=req.responseText;
}  
}

function stat(n)
{
switch(n)
{
case 0: return "не инициализирован";
break;
case 1: return "загрузка...";
break;
case 2: return "загружено";
break;
case 3: return "в процессе...";
break;
case 4: return "готово";
break;
default: return "неизвестное состояние";
}  
}

function requestdata(params)
{
loadXMLDoc('http.php',params);
}

-->
</script>


Код

<form name=form1>
<table width=100% style="font-size: 100%">
<tr><td width=30% valign=top>
Состояние запроса
<td width=70%>
<input size=25 disabled type=text name=state value="">
<tr><td valign=top>Код статуса
<td><input disabled size=2 type=text name=statusnum value="">
<input disabled size=19 type=text name=status value="">
<tr><td valign=top>Данные от сервера
<td><textarea rows=6 name=response disabled></textarea> 
<tr><td>Строка POST-запроса<td>
<input type=text name=getparams value="">
<input type=button onclick="requestdata(getparams.value);" value="POST">
</table>
</form>


http.php
Код

<?php

foreach($_POST as $k=>$a) 
echo $a; 

?>


Код не мой. Гарантировать ничего не могу :-)
PM MAIL WWW ICQ Skype   Вверх
Aliance
Дата 12.5.2005, 18:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 55
Всего: 137



Цитата(Sardar @ 12.5.2005, 18:48)
ты не прав, лучше читай ман прежде чем говорить

я прочел окола 30-50 страниц об этой технологие. Офф мана, к сож, не знаю.
Я так понял - так и объяснил. Может слова немного не те выбрал, но суть правельная, имхо:
ссылка №1
ссылка №2


PM MAIL WWW ICQ Skype   Вверх
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0647 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.