用户
 找回密码
 入住 CI 中国社区
搜索
查看: 1443|回复: 2
收起左侧

[已解决] input的get方法在IE下获取不到中文

[复制链接]
发表于 2015-7-31 17:51:08 | 显示全部楼层 |阅读模式
本帖最后由 dolphin 于 2015-7-31 17:57 编辑

请看如下代码:
后台:
PHP复制代码
public function seacher($str = '')
        {
                $str = $this->input->get('str', TRUE);
 
                if ( $str == '')
                {
                        echo json_encode( array('status' => 'FALSE' ) );
                        return;
                }
 
                $songs = $this->song_model->seacher( $str );
 
                if ( ! $songs )
                {
                        echo json_encode( array('status' => 'FALSE' ) );
                        return;
                }
               
                $json  = array();
                foreach ($songs as $value)
                {
                        array_push( $json, array( "song_id" => $value['song_id'], "song_name" => $value['song_name'], "song_author" => $value['song_authors'] ) );
                }
                echo json_encode( $json );
        }
 
 
复制代码


前台:
JS复制代码
 
    input.bind('input propertychange', function() {
        var str    = $(this).val();
        var server = Home + "admin.php?c=song&m=seacher&str=" + str;
 
        $.ajax({
            type : "GET",
            url  : server,
            dataType : 'json',
            success: function( data ) {
                if( data.status != "FALSE" ) {
 
                    tbody.html("");
 
                    $.each(data, function (index, value) {  
                        tbody.append("<tr><td>" + value.song_name + "</td><td>" + value.song_author + "</td><td><span class='glyphicon glyphicon-plus-sign' data-song='" + value.song_id + "' data-name='" + value.song_name + "' data-author='" + value.song_author + "'></span></td></tr>");
                    });
                }
           }
        })
    });
 
 
复制代码


功能就是:输入框内容变化时 得到input中的内容,然后通过ajax发送到后台搜索,然后返回json数据。

在chrome下是没有问题的。

但是在IE (11)下,当输入的内容是中文时  ,后台得到的数据就是空的。。。。

已经开启了查询字符串的

也就是这一句

PHP复制代码
 
$str = $this->input->get('str', TRUE);
 
复制代码


这个是什么原因 ?怎么修改?

 楼主| 发表于 2015-7-31 17:57:21 | 显示全部楼层
解决办法:将input的值先编码再提交:encodeURI(str) 就可以了。
发表于 2015-8-3 12:57:26 | 显示全部楼层
$str = $this->input->get('str', TRUE);这里获取到了正确的数据了么?
如果没有的话按照楼上的做,
如果这里有的话,应该是字符编码不匹配的原因查不到结果

本版积分规则