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);
这个是什么原因 ?怎么修改?
解决办法:将input的值先编码再提交:encodeURI(str) 就可以了。 $str = $this->input->get('str', TRUE);这里获取到了正确的数据了么?
如果没有的话按照楼上的做,
如果这里有的话,应该是字符编码不匹配的原因查不到结果
页:
[1]