$ ajax-> submit не отправляется в контроллер - PullRequest
0 голосов
/ 18 ноября 2010

Я использую плагин cakephp и pippoacl и просто не могу добавить новую роль.Что я изменяю в плагине, так это чтобы сделать отправку используя ajax, что-то вроде этого на мой взгляд (add.ctp):

<?php echo $ajax->submit(
        'submit',
        array(
            'url'   => array('controller' => 'roles', 'action' => 'add'),
            'before' => 'beforeSubmitAdd();',
            'complete' => 'completeSubmitAdd(request);'
        )
    );
?>

Когда файл add.ctp загружается впервые, я могу напечататьчто-то из контроллера.Но представленный выше ajax выполняет только javascript 'before' и 'complete'.Я проверяю на firebug, ответ пустой.

На моем контроллере:

function add() {        
    print_r("start");
    if (!empty($this->data)) {  
        print_r("add new role");        

        // save new role
    }       
}

Я использую ajax submit для пользователя, и у меня нет проблем с добавлением нового пользователя.Есть ли идея, где я должен проверить?Я сравнивал код пользователя и роли в течение недели и попросил друга посмотреть на мой код, но мы до сих пор не можем найти причины этого.

Заранее спасибо!: D

1 Ответ

0 голосов
/ 18 ноября 2010

Я не очень знаком с помощником Ajax, но я не использую его так долго, что не могу вспомнить, что он делает :).

Вернуться к проблеме. Вы проверяли правильность запрошенного URL в адресе Ajax? Это должно работать просто, но возможно, что URL недействителен.

Используете ли вы компонент Security (даже просто добавив его в переменную var $ components)? Это может привести к пустому экрану, особенно если вы каким-либо образом модифицируете поля в форме. Попробуйте удалить его и посмотреть, работает ли он без.

Наконец-то я бы сказал, как бы это сделать с помощью jQuery.

Следующий код должен выполнить работу:

$(document).ready(function(){
   $('form').live('submit', function(){ //handles also dynamically loaded forms
       var form = $(this).addClass('loading'); //indicate somehow that the form has been submitted
       $('#content').load($(this).attr('action'), $(this).serialize(), function(){
          form.removeClass('loading');
       });
   })
});

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

...