ajax не публикует, всегда пустое сообщение

#php #ajax #yii

#php #ajax #yii

Вопрос:

Я схожу с ума от этого. Я запрашиваю вызов ajax в нескольких местах, и ни один из этих вызовов ajax в последнее время не работает корректно. Сегодня я решил начать с нового раздела с ajax call. То же самое со всеми остальными. Прошло несколько дней, когда данные ajax не отправлялись на контроллер — всегда пусто.

Вот один из них. Я пытаюсь разрешить пользователям голосовать вверх / вниз по щелчку CButtonColumn {up}{down} . Эта сетка просмотра «_vote.php » генерируется путем renderPartial использования TbTabs . renderpartial В true последнем параметре я установил значение.

Хорошо, далее сетка. Вот оно:

 <?php $this->widget('bootstrap.widgets.TbGridView', array(
    'type'=>'condensed',
    'id'=>'vote',
    'dataProvider'=>$dataProvider,
    'template'=>"{items}",
    'ajaxUpdate'=>true,
    'columns'=>array(
            array(
                    'class'=>'CButtonColumn',
                    'template' => '{up} {down}',
                    'buttons' => array(
                            'up' => array(
                                    'label'=>'<i class="fa fa-thumbs-up"></i>',
                                    'imageUrl'=>false,
                                    'url'=>'Yii::app()->createUrl("prod/votecommentup", array("id"=>$data->primaryKey))',
                                    'click'=>' function(){
                                        $.fn.yiiGridView.update("vote", {
                                        type:"POST",
                                        url:$(this).attr("href"),
                                        success:function(data) {
                                              $.fn.yiiGridView.update(vote);
                                        }
                                    }',
                            ),
                            'down'=> array(
                                    'label'=>'<i class="fa fa-thumbs-down"></i>',
                                    'imageUrl'=>false,
                                    'url'=>'Yii::app()->createUrl("prod/votecommentdown", array("id"=>$data->primaryKey))',
                                    'click'=>' function(){
                                        $.fn.yiiGridView.update("vote", {
                                        type:"POST",
                                        url:$(this).attr("href"),
                                        success:function(data) {
                                              $.fn.yiiGridView.update(vote);
                                        }
                                    }',
                            ),
                    ),
            ),
    ),
)); ?>
  

Хорошо … далее, URL «prod / votecommentup», который почти идентичен votecommentdown. Вот оно:

 public function actionVoteCommentUp($id){
    $model = $this->loadModel($id);
    if(isset($_POST['VoteThis']))
    {
        $model->attributes=$_POST['VoteThis'];
        $model->prototype_review_id = $id;
        $model->user_id = Yii::app()->user->user_id;
        $model->vote = "Y";
        echo CJSON::encode(array('status'=>'saved'));
    }echo CJSON::encode(array('status'=>'not post')); //always give me a no post

}
  

Ответ №1:

Я рекомендую протестировать ваши вызовы через что-то вроде приложения Postman для Chrome. Это даст вам возможность отлаживать ваши вызовы API / AJAX независимо от вашего представления. Как только вы убедитесь, что API / AJAX работает правильно, вы можете интегрировать его в представление. Это позволяет вам разделить процесс отладки и, надеюсь, сделать вещи более прозрачными в отношении того, что функционально, а что нет.