AJAX没有将数据传递给CodeIgniter Controller

时间:2015-08-08 10:50:39

标签: php ajax codeigniter

问候StackOverflow!我试图使用AJAX将数据传递给控制器​​,但由于某些原因它没有。

控制器:

public function updateSocial($key){
        if($key != null){
            list($name, $address) = explode("&&", $key);
            $this->db->query("UPDATE social SET address = '" . $address . "' WHERE name = '" . $name . "'");
            echo "Affected rows: " . $this->db->affected_rows();
        }
    }

的Ajax:

function updateSocial(name){
                var address = $("#" + name).val();
                var key = name +"&&"+ address;
                //alert(key);
                $.ajax({
                    type: "GET",
                    url: "<?php echo base_url(); ?>controller/updatesocial", 
                    data: key,
                    dataType: "text",  
                    cache:false,
                    success: 
                        function(data){
                            alert(data);  //as a debugging message.
                        }

                });
            }

和HTML:

                <div class="row">
                    <div class="col-lg-10 col-md-10 col-sm-12 col-xs-12">
                        <label for="{name}">{name}</label>
                        <input id="{name}" class="form-control" name="{name}"value="{address}"/>
                    </div>
                    <div class="col-lg-2 col-md-2 col-sm-12 col-xs-12">
                        <div class="clearfix">&nbsp;</div>
                        <input type="submit" class="btn btn-material-green pull-right" onclick="updateSocial('{name}')"/>
                    </div>
                </div>

我在StackOverflow上搜索了解决方案,尝试了所有方法但无法解决。

如果我在url中手动输入值如下:

www.domain.com/controller/updatesocial/something&&another_something

它有效,所以问题不是PHP端。

我正在尝试做什么:我有多个需要单独修改的输入字段,我想使用AJAX这样做。

如果发布了同样的问题,我很抱歉,但我找不到了。我已经尝试了所有我能找到的东西,但它不起作用。

5 个答案:

答案 0 :(得分:2)

试试这个..

您可以通过ajax中的数据选项和定义的类型将数据发送到服务器。默认类型是GET方法

使用&#34;数据:{name:name,address:address},&#34;

 $.ajax({
                    type: "GET",
                    url: "<?php echo base_url(); ?>controller/updatesocial", 
                    data: {name:name,address:address},
                    dataType: "text",  
                    cache:false,
                    success: 
                        function(data){
                            alert(data);  //as a debugging message.
                        }

                });

答案 1 :(得分:2)

function updateSocial(name){
            var address = $("#" + name).val();
            var key = name +"&&"+ address;
            //alert(key);
            $.ajax({
                type: "GET",
                url: "<?php echo base_url(); ?>controller/updatesocial/"+key, 
                dataType: "text",  
                cache:false,
                success: 
                    function(data){
                        alert(data);  //as a debugging message.
                    }

            });
        }

您正在使用GET方法发送数据,因此您必须通过附加网址发送数据,而您的控制器将

public function updateSocial(){
    $key = $this->uri_segment(3);
    if($key != null){
        list($name, $address) = explode("&&", $key);
        $this->db->query("UPDATE social SET address = '" . $address . "' WHERE name = '" . $name . "'");
        echo "Affected rows: " . $this->db->affected_rows();
    }
}

答案 2 :(得分:1)

可能会在&#34;&amp;&amp;&#34;中创建问题,请在ajax中尝试data: encodeURIComponent(key)

答案 3 :(得分:1)

替换此行

var key = name +"&&"+ address;

要 -

var key = name +"-"+ address;

同样在服务器上爆炸( - ),试试吧

答案 4 :(得分:1)

据我所知,问题在于你&#34; var key&#34;,将其改为:var key =&#34; name =&#34; + name +&#34;&amp; &#34; +&#34;地址=&#34 +地址;