0

私のサイトには、訪問者がパスワードを変更できるウィンドウがあります。

問題は、 & 文字が使用されないことです:

これら 2 つの新しいパスワードを入力すると、次のようになります。

stack& stack& (2番目は確認です)

BD への挿入はスタック (& なし) です。

これはjsコードです:

data: 'nouveau_mdp=' + $('input#champ_nouveau_mdp').val(),

アラートに「stack&」と表示される

PHP では、$_POST の var_dump によって次のようになります。

スタック (& なし)。

& は jquery の予約語ですか?

これは私のjsコードです:

$.ajax({
                            type: 'POST',
                            url: 'modification_mdp.php',
                            data: 'nouveau_mdp=' + $('input#champ_nouveau_mdp').val(),
                            dataType: 'text',
                            success: function(reponse) {
                                reponse = $.trim(reponse);

この問題を解決するアイデアはありますか?

前もって感謝します。

4

4 に答える 4

2

フィールド値をエンコードする

data: 'nouveau_mdp=' + encodeURI($('input#champ_nouveau_mdp').val()),

このよう&にして、ASCII番号でエンコードされます。

于 2013-03-03T09:42:31.013 に答える
0

この行が問題です:

data: 'nouveau_mdp=' + $('input#champ_nouveau_mdp').val(),

&文字はHTTPで特別な意味を持っています。複数のパラメータがある場合、それらは&eg nouveau_mdp = mynewpassword&old_mdp=myoldpasswordで区切られます。

必要なのは、&、=などの文字を16進数に相当するもの、つまりそれぞれ%26と%3Dとしてエンコードすることです。

JavaScriptでは、 encodeURI()関数を使用してこれを行うことができます。

ただし、他の回答で述べたように、jQueryではパラメーターのJSONディクショナリを渡すこともでき、エンコードを行います。

于 2013-03-03T09:54:49.237 に答える
0

jQuery がエンコードする連想配列を渡してみてください。

data: { nouveau_mdp: $('input#champ_nouveau_mdp').val() }

この値を受け取る PHP コードを一致するように変更する必要があります (文字列ではなく配列を取得します)。

于 2013-03-03T09:48:39.647 に答える
0

アンパサンド文字は、Get メソッドまたは PHP の Post メソッドで渡すことができません。GET メソッドで PHP にアクセスする通常の構文はines.php?user=username&password=mypasswordであるため、「&」文字で 2 つの変数を区切ります。

そのため、'Stack&' から '&' を取得しません。 & がテキスト ボックスに入力されていない場合は、Javascript を使用して検証できます。JavaScript を使用して変数をエンコードします... PHP 側でのデコードは不要です

encodeURIComponent("stack&")
于 2013-03-03T09:39:03.947 に答える