CakePHP 2.0 не декодирует данные формы из запроса jquery ajax - PullRequest
0 голосов
/ 15 декабря 2011

Я пытаюсь просто сделать какой-то простой пользовательский ввод, используя jquery-загруженные представления. В этом примере у меня есть простая кнопка на веб-странице, которая отправляет ajax-запрос на загрузку представления, содержащего форму, в div, что прекрасно работает. Когда форма отправляется, данные не декодируются и не добавляются в массив данных запроса.

Вот фрагмент кода с главной страницы с простой ссылкой

    <?php 
    $this->Js->get('#sayHi')->event(
        'click',
        $this->Js->request(
            array('action' => 'sayHi'),
            array('update' => '#sayHiOutput')
        )
    );
    ?>
    <li><?php echo $this->Form->button(__('Say Hi'),array(
        'id'=>'sayHi',
        'href'=>$this->Html->url(array('action'=>'sayHi')),
        )); 
    ?></li>
    <li><div id=sayHiOutput></div></li>

Это загружает вид в div. Похоже на это:

          <?php
            $data = $this->Js->get('#WidgetSayByeForm')->serializeForm(array('isForm' => true, 'inline' => true));
            $this->Js->get('#WidgetSayByeForm')->event(
              'submit',
              $this->Js->request(
                array('action' => 'sayBye'),
                array(
                        'update' => '#sayHiOutput',
                        'data' => $data,
                        'async' => true,    
                        'dataExpression'=>true,
                    )
                )
            );
          ?>
          <?php echo $this->Form->create('Widget',array('action'=>'sayBye','default'=>false));?>
            <fieldset>
                <legend><?php echo __('Add Widget'); ?></legend>
            <?php
                echo $this->Form->input('name');
            ?>
            </fieldset>
          <?php echo $this->Form->end(__('Submit'));?>
          <?php echo $this->Js->writeBuffer(); ?>

Этот код запускает ajax-запрос при отправке формы и сериализует данные для запроса. Кажется, все работает правильно, так как я проверил данные запроса xml, используя TamperData. Однако в действии контроллера 'sayBye' массив данных запроса пуст, хотя массив 'query' показывает правильную информацию, вот что я напечатал в файле журнала:

[data] => Array
    (
    )

[query] => Array
    (
        [_method] => POST
        [data] => Array
            (
                [Widget] => Array
                    (
                        [name] => asdf
                    )

            )

    )

Я ожидал, что массив данных будет иметь то же содержимое, что и подмассив, показанный в данных запроса. Так что я предполагаю, что это еще один случай, когда я просто упускаю что-то очевидное, но я не смог понять это. Может быть, скрытый _метод не должен быть POST? Любая помощь будет оценена, спасибо.

Мэтт

1 Ответ

2 голосов
/ 15 декабря 2011

Вам необходимо передать параметр 'type' => 'POST' методу request ()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...