Ajax Кнопки

Подскажите, как в контроллере Yii проверить какая Ajax-submit кнопка была нажата на форме, походу значение атрибута "name" этой кнопки не отсылается =((

Код в студию. (код формы)

kod kotorii napisan vo freimworke na PHP ili uze sgenerirovannii kone4nii HTML-kod ?

Вот код:

<?php echo CHtml::form();

echo CHtml::label(‘Текст’, ‘input’);

echo CHtml::textArea(‘input’, $input);

echo CHtml::label(‘Результат’, ‘output’);

echo CHtml::textArea(‘output’, $output);

echo CHtml::ajaxSubmitButton(‘Обработать’, ‘’, array(

'type' =&gt; 'POST',


'update' =&gt; '#output',

),

array(

'name' =&gt; 'xxx',


'type' =&gt; 'submit'

));

echo CHtml::endForm();?>


input и output идут через POST, а вот имя кнопки на которую нажали (xxx) - нет. Дело в том что сгенерированный на этой основе яваскрипт код производит сериализацию формы, но кнопки типа submit видимо не сериализуются…

Остается единственное решение - другой кнопке назначать другой action url, тогда все будет норм

Нда… с таким дела не имел (пока ) но отсылают к http://code.google.com/p/yii/issues/detail?id=38

Может что дельное. :mellow:

Может jQuery использовать ?

http://docs.jquery.com/Ajax/serialize

можно просто передать какой нужно параметр в пост запросе, нужно добавить в ajaxOptions что-то типа


'data' => '{buttonName : 'mega_button_1'}

Если я пишу типа ‘data’ => ‘knopka=pizdata’, то тогда уже не идут данные с формы, а идут только указанные в ‘data’ данные

Сделайте в форме скрытое поле:




CHtml::hiddenField('knopka','pizdata');



Странное название кнопки :slight_smile:

Нет, так не получится. У меня на ОДНОЙ форме может быть ДВЕ кнопки

Можно с разных кнопок посылать на разные URL.

я это уже писал:

"Остается единственное решение - другой кнопке назначать другой action url, тогда все будет норм "

Просто хотелось бы узнать, можно ли какнибудь проверить инфу какая кнопка была нажата, ведь в случае если JS будет отключен тут неудобства возникнут если указывать разные урлы…

что мешает написать


'data' => 'js:jQuery(this).parents("form").serialize()+"&knopka=pizdata"'

?

horoshaia idea, tolko mne kazalos 4to eto budet vospriniato kak stroka i etot kod serializacii ne vipolnitsia. no proveriu.

spasibo bolshoe. Teper rabotaet tak kak ia xotel. Plizz skazhi gde ti eto v manuale nashel?

на здоровье, в мануале нет, смотрел код CHtml.

в итоге все портило это место в CJavaScript::encode() которое используется в CHtml::ajax() для генераций опций


if(is_string($value))

{

	if(strpos($value,'js:')===0)

		return substr($value,3);

	else

		return "'".self::quote($value)."'";

}