Cakephp:Ajax响应在“编辑”中没有正确

时间:2013-08-23 13:25:36

标签: ajax cakephp cakephp-2.0

我有一个ajax代码,当更改选择值时,加载下一个选择的值。

当我在某个页面时,例如:societario/attorneys/solicitar这样可以正常工作并加载loadfiliais罚款。

但是,当我在societario/attorneys/edit/例程中时,响应是相同的编辑页面而不是loadfiliais视图。

响应没问题,但页面是实际页面edit

enter image description here

以下是ajax的代码:

$(document).ready(function() {
$('.loading').hide();
        $("#AttorneyEmpresa").change(function(){
            $.ajax({
                type: 'POST',
                data: { select: $('#AttorneyEmpresa').val()},
                url: 'loadfiliais',
                beforeSend: function() {
                    $("#AttorneyFilial").hide();
                    $('.loading').show();
                },
                success: function(data) {
                     $("#AttorneyFilial").html(data).show();
                     $('.loading').hide();
                }
            })
        })
    });

控制器loadfiliais:

function loadfiliais() {

    if($this->request->is('ajax')) {
        $this->loadModel('Branch');

        $this->layout = 'ajax';
        $this->set('filiais',$this->Branch->find('all', array('conditions' => array('company_id' => $this->request->data['select'])))
        );


    }

}

视图loadfiliais:

<option value="">Selecione</option>
<?php foreach($filiais as $filial): ?>
<option value="<?php echo $filial['Branch']['id']; ?>"> <?php echo $filial['Branch']['nome']; ?></option>
<?php endforeach ?> 

由于

1 个答案:

答案 0 :(得分:1)

我认为loadfiliaisattorneys控制器中的一个动作。在这种情况下,尾部斜线很可能是问题所在。

没有尾部斜杠,solicitar被视为文件名,attorneys被视为文件所在的文件夹,这是AJAX调用的基本文件夹,所以你将结束societario/attorneys/loadfiliais

使用尾部斜杠,如societario/attorneys/edit/中一样,edit被视为基本文件夹,因此您最终会调用societario/attorneys/edit/loadfiliais的AJAX。

您可以通过使用AJAX网址的绝对路径来避免这种情况,即

url: '/societario/attorneys/loadfiliais'