php ef bb bf,神奇的%EF%BB%BF解决方法

神奇的%EF%BB%BF

废话不多说上代码:

前台:

function on_post_form(){

var f = document.post_myform;

var s_paramName = document.getElementById("select_paramName").value;

f.action = "__APP__/index/select_infomessage-s_paramName-"+encodeURIComponent(s_paramName)+".html";

f.submit();

}

$(document).ready(function(){

$('#select_paramName').keyup(function(){ //输入框的id为search,这里监听输入框的keyup事件

$.ajax({

type:"GET", //AJAX提交方式为GET提交

url:"__APP__/index/get_search_showdiv", //处理页的URL地址

data:"s_Name="+encodeURIComponent($('#select_paramName').val()), //要传递的参数

success:function(data){ //成功后执行的方法

if(data != ""){

var ss;

ss = data.split("@"); //分割返回的字符串

var layer;

layer = ""; //创建一个table

for(var i=0;i layer += "

"+ss[i]+"";

}

layer += "";

$('#searchresult').empty(); //先清空#searchresult下的所有子元素

$('#searchresult').append(layer);//将刚才创建的table插入到#searchresult内

$("#searchresult").css("display", "");

$('.line').hover(function(){ //监听提示框的鼠标悬停事件

$(this).addClass("hover");

},function(){

$(this).removeClass("hover");

});

$('.line').click(function(){ //监听提示框的鼠标单击事件

$('#select_paramName').val($(this).text());

$("#searchresult").css("display", "none");

ChangeCoords();

});

}else{

$('#searchresult').empty();

}

}

});

});

});

后台:

public function get_search_showdiv()

{

//urlencode urldecode 文本框自动提示

$keyword = urldecode($_GET['s_Name']);

$condition = "f_hotname like '%".$keyword."%'";

$info=$this->model->table('forest')->field('f_hotname')->where($condition)->order('f_id desc')->limit(5)->select();

if($keyword !=""){

foreach($info as $vo)

{

echo $vo['f_hotname'].'@';

}

}else{

echo "";

}

}

问题症状:比如输入“百度”

在div #searchresult 里显示:

百度杀毒

百度卫士

百度影音

如果选择第一项百度杀毒,火狐浏览器这样显示:

http://192.168.1.101/index/select_infomessage-s_paramName-%EF%BB%BF%百度杀毒.html

什么也没有。。。

如果选择第二项百度卫士,火狐浏览器这样显示:

http://192.168.1.101/index/select_infomessage-s_paramName-百度卫士.html

正常搜索,可以搜索到信息。其它项也是正常,唯独第一项就不正常。

度娘说是bom头,我所有页面都是去bom头的,编码也是utf8,尝试了很多也解决不了问题。

为什么会在第一项时候会加入%EF%BB%BF%,,,,, 在其它项都可以正常显示的。

------解决方案--------------------

public function get_search_showdiv()

这个函数所在php脚本文件有BOM

------解决方案--------------------

utf-8 文件的 BOM 头的十六进制表示是 EFBBBF

url 编码后是 %EF%BB%BF

ajax 请求的 url 为 __APP__/index/get_search_showdiv

显然这是在使用框架

框架在处理一个请求时,至少会加载 3 个文件

所以任何一个被加载的文件有 BOM 头,返回的内容就会有 BOM 头

连接变成 ....%EF%BB%BF百度杀毒.html

而不是 ....%EF%BB%BF%EF%BB%BF百度杀毒.html

就表示只有一个文件有 BOM 头

ajax 收到的是形如 [email protected]@xxx@ 的串

BOM 当然是附加在内容前面的: [email protected]@xxx@

拆分成数组后,自然是只有第一项有 BOM 啦

相关文章

相关视频

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值