dolphin 发表于 2015-7-31 17:51:08

input的get方法在IE下获取不到中文

本帖最后由 dolphin 于 2015-7-31 17:57 编辑

请看如下代码:
后台:
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 );
      }



前台:

    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)下,当输入的内容是中文时,后台得到的数据就是空的。。。。

已经开启了查询字符串的

也就是这一句


$str = $this->input->get('str', TRUE);


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

dolphin 发表于 2015-7-31 17:57:21

解决办法:将input的值先编码再提交:encodeURI(str) 就可以了。

ahcheqiu 发表于 2015-8-3 12:57:26

$str = $this->input->get('str', TRUE);这里获取到了正确的数据了么?
如果没有的话按照楼上的做,
如果这里有的话,应该是字符编码不匹配的原因查不到结果
页: [1]
查看完整版本: input的get方法在IE下获取不到中文