0

我有一个 JavaScript 代码,它调用 PHP api 的函数在我的数据库中插入一行。

var url = 'http://myapi/OfertasVentaOnline/api.php?method=update&function=categoria&id='+id+'&idCategoria='+id_categoria+'&descripcion='+descripcion+'&format=json';


    $.getJSON(url, function (data){     

    });   

此网址的示例:

"http://myapi/OfertasVentaOnline/api.php?method=create&function=categoria&id=9999&idCategoria=3&descripcion=test%new%category&format=json"

在 url 中,我替换了描述参数中 % 的空格,如此处所示,url 已正确创建。

然后我得到了我的 api,他接到电话并对其进行解码。在我用来解码和获取参数的函数中:

$descripcion_cool = str_replace("%"," ",$_GET['descripcion']);

echo utf8_decode($descripcion_cool);

$query = 'INSERT INTO `Categorias`(`idCamping`, `idCategoria`, `descripcion`) VALUES (
                    "'.mysql_real_escape_string($_GET['id']).'",
                    "'.mysql_real_escape_string($_GET['idCategoria']).'",
                    "'.mysql_real_escape_string($descripcion_cool).'")';

这输出:

test new?tegoryINSERT INTO `Categorias`(`idCamping`, `idCategoria`, `descripcion`) VALUES (
                    "9999",
                    "3",
                    "test new�tegory")null

如您所见,php 在 url 参数中添加了一些特殊字符。我在做什么错?谢谢

PD:在我的 php 文件中,我尝试添加:

header('Content-type: text/plain; charset=utf-8');

但它一直在做同样的事情。

提前致谢

4

1 回答 1

2

假设您发送的参数值包含空格,您通过将空格替换为%. 实际上,您不必这样做。encodeURIComponent()如果要对传递的参数/查询进行编码,可以使用方法。如果你想编码 url,那么使用encodeURI()

 description = encodeURIComponent(description);

var url = 'http://myapi/OfertasVentaOnline/api.php?method=update&function=categoria&id='+id+'&idCategoria='+id_categoria+'&descripcion='+descripcion+'&format=json';



    $.getJSON(url, function (data){     

    });   

这将安全地对 url 进行编码。

于 2013-02-05T18:46:23.647 回答