0

PHPapiの関数を呼び出してデータベースに行を挿入するjavascriptコードがあります。

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のサンプル:

"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');

しかし、それは同じことを続けます。

前もって感謝します

4

1 に答える 1

2

スペースを含むparam値を送信すると仮定すると、スペースを。に置き換えてエンコードし%ます。実際、あなたはそれをする必要はありません。encodeURIComponent()渡されるparams/quesrystingsをエンコードする場合は、メソッドを使用できます。また、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 に答える