Проблема во время AJAX-запроса к плагину CakePHP - PullRequest
0 голосов
/ 05 августа 2011

я работаю над плагином, который расширяет базовую платформу cakePHP.Этот плагин включает в себя контроллер, который будет вызываться с помощью внешнего ajax-запроса с jQuery.Вся архитектура является клиент-серверной.Проблема в том, что если я отправляю данные в контроллер плагина, значение $ this-> data всегда пусто.У кого-нибудь есть идея, где проблема?Вот код:

// client code
$('#upload').click(function() {

        // data for testing
        var media = {};
        media.name = 'Rihanna - S and M';
        media.userid = 5;
        media.description = 'Song of Rihanna';
        media.rating = 4;
        media.comments = new Array();

        var comment = {};
        comment.id = 1;
        comment.user_id = 2;
        comment.text = 'good';
        media.comments.push(comment);

        var comment2 = {};
        comment2.id = 2;
        comment2.user_id = 3;
        comment2.text = 'nice';
        media.comments.push(comment2);


        var json = $.toJSON(media);

        $.ajax({
            url:'http://server.localhost/mediamanager/connectors/add',
            async: false,
            dataType: 'json',
            type:'POST',
            data:json,
            success:function(response) {
                console.log(response);
            },
            error:function(response, status, text) {
                console.log(response);
                console.log(status);
                console.log(text);
            }
        })

    });

Вот код CakePHP.Другое дело, что $ this-> RequestHandler-> isAjax () всегда возвращает false, хотя я делаю ajax-запрос.

// server code
function add()
{

    if ($this->RequestHandler->prefers() == 'json') {
            Configure:: write('debug', 0);
            $this->autoRender = false;
            $this->layout = 'ajax';
            if(empty($this->data)) {
                echo "data is empty";
            } else {        
                echo "data received";
            }   

    } 

}

Я надеюсь, что любой может помочь, потому что это сводит меня с ума.

Ответы [ 2 ]

1 голос
/ 05 августа 2011

Вам нужно POST данные как «данные», при текущей настройке вы найдете ваши постданные в $this->params['form'].

В качестве альтернативы вы можете отправить постданные прямо в $ this-> data, изменивстрока в вашем AJAX-запросе:

data: {data: json}
0 голосов
/ 07 августа 2011

Может быть, вы должны попробовать $ this-> params ['isAjax'] == 1 вместо $ this-> RequestHandler-> isAjax (), но не забудьте сначала добавить компонент "RequestHandler" в контроллер.;) используйте это, чтобы увидеть, какие данные вы получаете pr ($ this-> params);

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