如何将选择标记值从视图重定向到控制器,然后在没有使用ajax重新编码codeigniter的情况下进行查看

时间:2014-03-07 10:46:59

标签: jquery ajax codeigniter

我想从视图中将我的选择标记值发送到我的控制器,控制器将消息传递到同一视图而不重新加载页面,并且不会更改我已经选择的选择标记选项值。我使用了ajax但它没有无法从视图重定向到控制器再次查看。我想使用这样的概念:当我在select标签中选择一个值时,该值将被传递给conroller并从数据库中获取相应数据并将其分配给下一步选择标签而不重新编码页面而不更改我的另一个选择标签的选定内容。但由于这个原因我失败了。我现在可以做什么?我现在没有处理数据库部分。我的code.it是查看页面 test1.php

<body>
    <?php
    echo "selected: " . $x;
    echo "<br>";
    ?>
    <label> Movie Name :</label>
    <select class="mv_name">
        <option value="select">Select</option>
        <option value="Elysium">Elysium</option>
        <option value="Out of the Furnace">Out of the Furnace</option>
        <option value="American Hustle">American Hustle</option>
        <option value="The Hobbit">The Hobbit</option>
        <option value="Frozen">Frozen</option>
        <option value="Despicable Me 2">Despicable Me 2</option>
    </select>
    <label> Quantity :</label>
    <select class="quantity">
        <option value="">Select</option>
        <option value="">1</option>
        <option value="">2</option>
        <option value="">3</option>
        <option value="">4</option>
        <option value="">5</option>
        <option value="">6</option>
    </select>

    <script>
        $('.mv_name').on('change', function() {
            alert(this.value);
            var form_data = {
                select_value: this.value,
                ajax: '1'
            };

            $.ajax({
                url: "<?php echo base_url('test1_c/redirect1'); ?>",
                type: 'POST',
                data: form_data,
                dataType: 'html',
                success: function(msg) {
                    alert(msg);
                }
            });
        });
    </script>

</body> 

我的控制器 test1_c.php

<?php

class Test1_c extends CI_Controller {

    public function index() {
        $data['x'] = "intial value";
        $this->load->view('test1', $data);
    }

    function redirect1() {
        echo "redirect";
        $is_ajax = $this->input->post('ajax');

        if ($is_ajax) {
            $data['x'] = $this->input->post('select_value');

            $this->load->view('test1', $data);
        }
    }

}

?>

1 个答案:

答案 0 :(得分:0)

据我了解,您希望从选择框中选择用户,然后将信息发回给用户。

如果没有发送新请求就无法完成,但是,根据代码点火器的表单验证来考虑这个小“技巧”​​。

在控制器中,您可以分配选择的POST值。 例如,

$this->select = $_POST['selectionbox']
$this->value[$this->select] = $this->select ;

那么这有什么好处呢?你现在有一个名为value的变量,它包含一个键/值对,其中包含选择框的选项的名称。

继续,你创建一个简单的函数来检查变量是否存在,否则返回“”;

function returnPost($value)
{
if isset( $this->value($value))
$temp = "select="selected"
return  $temp;
}

再次继续,您现在可以在视图中使用该功能,例如:

<select>
<option value="test" <?php returnPost('test') ?> > test </option>
<option value="fail" <?php returnPost('fail') ?> > fail</option>
</select>

现在这是做什么的

1)用户点击提交,我们将select的值保存到变量中。 2)当我们加载视图时,我们使用一个函数来检查这个特定的选择是否存在,如果存在,我们回显select = selected属性,如果它不是我们什么都不做。

那基本上就是:) 请注意 - 这确实是一个全新的请求,它似乎只是页面没有重新加载,它实际上是重新加载。