Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: request.onreadystatechange как передать функцию
 
 автор: MRE   (10.06.2007 в 15:50)   письмо автору
 
 

Для отправки запроса написал функцию:

function send_request(meth,targ,fun,param)
{
if (request)
{
try
{
if (meth == "GET")
{
request.open(meth,targ + "?" + param,true);
request.onreadystatechange = fun;
// request.open("POST","php_/test.php",false);
request.send();
}
else
{
request.open(meth,targ,true);
request.onreadystatechange = fun;
// request.open("POST","php_/test.php",false);
request.send("fid=2");
}
}
catch(e)
{
alert("Невозможно соединиться с сервером:\n" + e.toString());
}
}
}

1) fun - имя функции, которая будет отрабатывать после отправки запроса, но если написать:
request.onreadystatechange = fun;
то функия не отработает, что сделать чтобы она отрабатывала?
2) GET работает нормально, а POST не хочет, пишет ошибку выполнения скрипта, в чем может быть дело?
Спасибо.

   
 
 автор: MRE   (10.06.2007 в 15:52)   письмо автору
 
   для: MRE   (10.06.2007 в 15:50)
 

Видимо нужно передавать не имя функции, а указатель на функцию, но как это сделать??

   
 
 автор: MRE   (10.06.2007 в 15:56)   письмо автору
 
   для: MRE   (10.06.2007 в 15:52)
 

С 1-м разобрался, нужно было передавать в функцию имя без кавычек.
Остается открытым вопрос с POST.

   
 
 автор: bronenos   (10.06.2007 в 16:58)   письмо автору
 
   для: MRE   (10.06.2007 в 15:56)
 

если пост то надо
данные перевести в строку ключ1=значение&ключ2=значение2&ключ3=значение3....
если там кодировка винда то кодировать ее через encodeURIComponent()
и отправить эту строку через obj.send()
перед этим еще отправить заголовок

obj.setRequestHeader ('Content-Type', 'application/x-www-form-urlencoded; charset=windows-1251');

   
 
 автор: MRE   (10.06.2007 в 18:17)   письмо автору
 
   для: bronenos   (10.06.2007 в 16:58)
 

Че то не получилось.
function send_request(meth,targ,fun,param)
{
if (request)
{
try
{
if (meth == "GET")
{
request.open(meth,targ + "?" + param,true);
request.onreadystatechange = fun;
request.send();
}
else
{
request.open(meth,targ,true);
request.onreadystatechange = fun;
request.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=windows-1251');
param = encodeURIComponent(param);
request.send(param);
}
}
catch(e)
{
alert("Невозможно соединиться с сервером:\n" + e.toString());
}
}
}

   
 
 автор: MRE   (10.06.2007 в 18:36)   письмо автору
 
   для: MRE   (10.06.2007 в 18:17)
 

Получилось!
param = encodeURIComponent(param); было лишним
Спасибо!

   
 
 автор: bronenos   (10.06.2007 в 20:11)   письмо автору
 
   для: MRE   (10.06.2007 в 18:36)
 

оно было не лишним
просто вы не так его использовали
но раз работает то ладно...

   
 
 автор: coloboc66   (11.06.2007 в 09:36)   письмо автору
 
   для: bronenos   (10.06.2007 в 20:11)
 

encodeURIComponent нужно для кроссброузерности. И для работы с XML-документом на сервере.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования