Вопрос № 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 Комментарий оценки: Спасибо. Сделал по последнему варианту - помогло.