CakePHP 3:$ this-> POST后没有设置响应数据

时间:2017-11-20 19:38:59

标签: php jquery json ajax cakephp

我试图从我的控制器得到我的视图文件的响应,但我总是得到没有回应。我知道控制器正在获取正确的数据并且数据在控制器中,因为我使用echo来检查但是然后创建了无法发出标头的错误。但是,当我使用$ this->设置时,我得不到任何响应。我已经跟随了许多其他问题,并添加了请求处理程序并尝试了各种各样的东西,但无法使其工作。

这是我的查看文件blah.ctp。

<?php use Cake\Routing\Router; ?>
<?= $this->Form->create(Null, ['type' => 'POST']) ?>
<?php
    echo $this->Form->input('customer_id', ['options' => $customers, 'empty' => true,'id'=>'customers']);
?>
<?= $this->Form->end() ?>

<script>
document.getElementById('customers').addEventListener('change',function(){
   var id = this.value;
    var csrfToken = $('[name=_csrfToken]').val();
    $.ajax({
        type: "POST",
        url: '<?php echo Router::url(array("controller" => "Customers", "action" => "fill")); ?>',
        headers: {          
       Accept: "application/json"  
            },     
        data: {'id' : id},
        beforeSend: function(xhr){
           xhr.setRequestHeader('X-CSRF-Token', csrfToken);
        },
        success: function(data){
            alert(data);
        }
    });
});
</script>

这是我在CustomersController中的填充功能

public function fill(){
        $layout = 'ajax';
        $this->autoRender = false;
        if ($this->request->is('post')) {
            $id = $this->request->data['id'];
            $data = $this->Customers->get($id);
            $this->set(compact('data'));
            $this->set('_serialize', ['data']);
        }  
    }

没有回复和预览 enter image description here

1 个答案:

答案 0 :(得分:0)

EnableJpaRepositories