我有一个奇怪的问题,我什至不知道如何解决......
我有一个小的 AJAX 调用:
$('#toexcel').live("click",function() {
var sql = grid.data().sql;
$.ajax({
url: "toExcel.php",
data: "sql="+sql,
success: function(response){
window.location.href = response.url;
}
});
alert(sql);
});
});
将sql
查询从grid
对象传递到toExcel
。 toExcel
使用PHPExcel
对象来输出Excel文件。
现在:
当警报弹出时,它具有正常查找的查询...LIKE '%cdviled%'...
但是当我在 toExcel 中访问此查询时.php它看起来像...LIKE 'Íviled04%'....
并且查询显然失败。
为什么?????如何??
PHP 将%cd
解释为 URL 编码的实体。 您需要在发送 ajax 请求之前通过encodeURIComponent()
运行参数。
简单地通过ajax发送搜索词并让PHP在服务器端组装SQL,你可能会得到更好(和更安全(的结果!
>%cd
是Í
的有效URL编码表示,PHP可以这样处理它。
解决方案很简单。改变:
data: "sql="+sql,
自:
data: "sql="+encodeURIComponent(sql),