链式AJAX下拉列表(选择)jquery

时间:2015-07-25 08:10:18

标签: javascript php jquery ajax cakephp

所以,最近我一直在讨论cakephp,但我遇到了一个我似乎无法解决的问题。我怀疑这很简单,我很遗憾(大多数情况下)。 我正在尝试做的前提在标题中有些不言自明:我在这个添加中有一个视图(我的add.ctp)我有一个用表单助手创建的表单。

我有多个选择,第一个选择是公司列表。一旦选择了公司,我现在想要使用jquery和ajax向控制器发送get请求,根据所选值更新下一个选择。

AJAX请求成功完成,但我似乎无法访问所需的返回数据(属于所选公司的项目列表)。

要清楚我正在尝试在成功回调中返回一个数组

我已经阅读了很多并且四处搜索,但我觉得v3 cakephp可能没有例子。

我的一些代码

控制器

   $projectphase = $this->Projectphases->newEntity();
   $data = ['content' => 'hi', 'error' => 'nothing found'];
   $projects = array('0' => 'Select something');
   if($this->request->is('ajax')){

        $company_id = $this->request->data('company_id');
        $projects = $this->Projectphases->Projects->find('list', ['limit' => 2, 'conditions' => ['company_id' => $company_id]]);
        $arr = array();
        $arr = $this->chainedProjects($company_id);
        $data = ['content' => 'hello', 'error' => ''];
        $this->set(compact('projects', 'data'));
        $this->set('_serialize', ['projects', 'data']);

   }elseif($this->request->is('post')){

       debug("hit post");
       die();
   }

公共功能chainedProjects

    $projects = $this->Projectphases->Projects->find('list', ['limit' => 2, 'conditions' => ['company_id' => $id]]);
    $projs = $projects->toArray();
    $values = array();
    $x = 0;
    foreach ($projs as $key => $value) {
         $values[$x] = "<option value='$key'>$value</option>";
         $x++;
    }
    return $values;

Javascript [jquery ajax]

    $(document).ready(function(){

    $('#company').change(function () {
        $company_id = $('#company').val();
        var data = {
            'type' : 'dropdown',
            'company_id' : $company_id
        };
        $.ajax({
            type        : 'GET',
            //url       : 'delegate1/projectphases/add',
            data        : data,
            encode      : true,
            beforeSend: function(xhr){
                xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
            },
            success: function(response){
                console.log('success');
                console.log(response.content);
                console.log(response.message);

                //console.log(data.response);
                //console.log(result.content);
                console.log(response);
            }       
        }).done(function(){
            console.log('done');
        })
    });
    })

Jquery 2.1.3

任何帮助都将不胜感激!

0 个答案:

没有答案