%cd 在 ajax 中转换为 Í 到 php 调用


%cd transformed to Í in ajax to php call

我有一个奇怪的问题,我什至不知道如何解决......

我有一个小的 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对象传递到toExceltoExcel使用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),