Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на Java / JavaScript


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Java/JavaScript

Выпуск № 332
от 11.02.2007, 19:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 334, Экспертов: 39
В номере:Вопросов: 1, Ответов: 1


Вопрос № 74338: Здравствуйте! В прошлый раз несколько упростил вопрос. Сейчас более развернуто. У меня есть тег: <select name="Countrie7" class="text" <select name="Countrie7" class="text" onChange="javascript:A...

Вопрос № 74.338
Здравствуйте! В прошлый раз несколько упростил вопрос. Сейчас более развернуто.
У меня есть тег: <select name="Countrie7" class="text" <select name="Countrie7" class="text" onChange="javascript:Ajax.Request('getagents.php?method=getXML¶m=',this.value, Ajax.Response(‘Region’));">
И есть код (во вложении). Вот в таком состоянии при выборе из списка ругается readyState есть null или не является объектом.
Если в коде вместо NameElement поставить ‘Region’, а тег написать : <select name="Countrie7" class="text" <select name="Countrie7" class="text" onChange="javascript:Ajax.Request('getagents.php?method=getXML¶m=',this.value, Ajax.Response());">, то все работает, вообщем как правильно передавать значение ‘Region’ в скрипт?

Приложение:

Отправлен: 06.02.2007, 06:12
Вопрос задал: Sardukar (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: HookEst
Здравствуйте, Sardukar!
У Вас Метод Ajax.Request - третьим аргументом требует ссылку на callback функцию, а когда ВЫ пишите:
Ajax.Request('getagents.php?method=getXML',this.value, Ajax.Response('Region'));
то Ajax.Response у Вас выполняется еще до Ajax.Request, когда только вычисляются аргументы для Request.
Можно просто написать:
Ajax.Request('getagents.php?method=getXML',this.value, Ajax.Response);
т.е. без скобок. Тогда в Ajax.Request передастся ссылка на метод Ajax.Response, а не результат его выполнения.
Но аргументы, такие как NameElement придется передавать как-то отдельно, например ч/з дополнительное свойство Ajax или другую глобальную переменную,
или создать функции:
function onResponseRegion(){
Ajax.Response('Region')
}
а в SELECT прописать:
onchange="Ajax.Request('getagents.php?method=getXML',this.value, onResponseRegion);"

Или если у Вас все запросы обрабатываются только Ajax.Response, то можно изменить саму функцию Ajax.Request
Ajax.Request = function(url,id, NameElement)
{
if ( id == 0 )
{
return;
}
Page.getPageCenterX();

Ajax.request = Ajax.createRequestObject();
Ajax.request.onreadystatechange = function(){Ajax.Response(NameElement)};
Ajax.request.open("POST", url+id, true);
Ajax.request.send();
}
тогда в SELECT прописать:
onchange="Ajax.Request('getagents.php?method=getXML',this.value, 'Region');"

Удачи.
Ответ отправил: HookEst (статус: Студент)
Ответ отправлен: 06.02.2007, 08:32
Оценка за ответ: 5
Комментарий оценки:
Спасибо. Сделал по последнему варианту - помогло.


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
ООО "Мастер-Эксперт Про", Москва, 2007
Авторские права | Реклама на портале
Версия системы: 4.44 beta от 26.01.2007
Яндекс Rambler's Top100

В избранное