将参数从ajax传递给zend控制器

时间:2015-02-23 07:45:31

标签: php ajax zend-framework

我的索引视图中有一个选择下拉列表

<select name="level" id= "level" onchange="changeLevel(this)">

            <?php $level = $this->escapeHtml($user->level); ?>

            <?php if ($level == 1): ?>
                 <option value="1" selected ="selected">Administrator</option>
                 <option value="2" <?php IsSelected($level,2); ?>> Manager</option>
                 <option value="3" <?php IsSelected($level,3); ?>>HR Staff</option>
             <?php elseif ($level == 2): ?>
                 <option value="1" <?php IsSelected($level,1); ?>>Administrator</option>
                 <option value="2" selected ="selected">Manager</option>
                 <option value="3" <?php IsSelected($level,3); ?>>HR Staff</option>
               <?php elseif ($level == 3): ?>
                 <option value="1" <?php IsSelected($level,1); ?>>Administrator</option>
                 <option value="2" <?php IsSelected($level,2); ?>>Manager</option>
                 <option value="3" selected ="selected">HR Staff</option>
                <?php endif; ?>
            </select>

我希望每当他在下拉列表中选择时更新用户级别,所以我使用onchange事件,我也有这个ajax连接到我的控制器

<script>

    changeLevel = function(level){
            var level_value = level.value; 
            alert(level.value);
        $.ajax({
            type: "POST",
            url: 'http://localhost/ijm/public/user/level',
            data: { function_name: 'level', 
                function_params: level_value },
            Success: function(result){
                alert('Success');
            }
        });
    }

    </script>

这是我在我的控制器中的功能

public function levelAction()
    {

        $storage = $this->getAuthService()->getStorage();
        $user = $storage->read();
        $request = $this->getRequest();
        $level = $request->getPost('level_value');
        echo $level;
            // Check if form values are valid
            $this->getUserTable()->editLevel($user->id, $level);
            $this->redirect()->toRoute('user');
            echo "success";      

    }

所以在我的ajax中我传递了函数参数,这是我下拉列表中的选定级别。但问题是我的控制器没有得到我通过的参数 我该怎么做才能获得从ajax传递给控制器​​的正确参数?
提前致谢。

1 个答案:

答案 0 :(得分:0)

在您发送data: { function_name: 'level', function_params: level_value }的ajax函数中,作为参数名称,您使用function_params。在您的控制器中而不是$level = $request->getPost('level_value');,您需要$level = $request->getPost('function_params');或更好地执行$level = $this->_getParam('function_params');