我有一个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中我在descripcion参数中替换%的空格,如此处所示,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');
但它一直在做同样的事情。
提前致谢
答案 0 :(得分:2)
假设您正在发送包含空格的参数值,您可以使用%
替换空格对其进行编码。实际上,你不必这样做。如果要对传递的params / quesrystings进行编码,可以使用encodeURIComponent()
方法。如果您想对网址进行编码,请使用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){
});
这将安全地编码网址。