2011-02-02 10 views
0

私は変数をAJAX経由でファイルに渡していますが、 "&"という文字を含む変数を渡しているときに問題があります。私は理由を知っています。id = 1のような文字列をつぶしているからです。&名前= blabla &何か= q & a。POSTで "&"を渡す

しかし、どうすれば動作させることができますか?

誰かがコードを望んでいた、ここでは

$("#btnCatEditSubmit").click(function() 
      { 
       $.ajax(
       { 
        type: "POST", 
        url: "catEditSubmit.php", 
        data: "catID=<?= $catID ?>" + "&catName=<?= $catName ?>", 
        success: function(data) 
        { 
         alert(data); 
        } 
       }); 
      }); 

catNameは「何か&何か」であるかもしれないし、私は問題があります。

+0

を使用して「&」の文字をエスケープする必要がありますいくつかのコード –

+0

をご提示くださいPHPまたはJavaScriptを使用する必要がありますか? –

答えて

6

エンコード/エスケープする必要があります。 PHPで

、あなたはurlencode()機能であることを行うことができます。

$string = urlencode($string); 

だからあなたのコードでは、それを実行します。

data: "catID=<?= urlencode($catID) ?>" + "&catName=<?= urlencode($catName) ?>", 

あるいはさらに良い:

data: <?=json_encode(array('catID' => $catID, 'catName' => $catName))?>, 

( jQueryでは、キーと値のペアのハッシュを直接渡すことができるため、jQueryはエスケープ処理を行うことができます。は、javascriptでわかるように配列をフォーマットします)。


JavaScriptでは、あなたはencodeURIComponentで()関数でそれを行うことができます。

var escaped_string = encodeURIComponent(str); 

しかし、あなたはjQueryのを使用しているとして、あなたはまた、ハッシュと直接変数を渡すことができます。代わりにこれを行うための

$.ajax({ 
    data: {a: "b", c: "d"}, 
    ... 
}); 

をとjQueryはあなたのためにすべてをエスケープします:

$.ajax({ 
    data: "a=b&c=d", 
    ... 
}); 

はこれを行います。

+0

ありがとう、私の問題を解決しました。 – sed

+0

あなたは@ Qmalというこの回答に同意する必要があります。 –

1

PHPのurlencode()関数を使用すると、パラメータ値をURLセーフにすることができます。

+0

ありがとう、私の問題を解決しました。 – sed

1

&をURLエンコードする必要があります。コードは%26です。

0

URLに特別な意味があるので、&文字をエスケープする必要があります。あなたは$.paramヘルパーメソッドを使用して、jQueryのを使用しているので、あなたは、ネイティブ関数encodeURIComponentでこれを行うか、することができます

var querystring = $.param({ 
    id: 1, 
    name: 'blablah', 
    something: 'q&a' 
}); 
関連する問題