1. ホーム
  2. javascript

[解決済み] AJAXで"&"(アンパサンド)文字を送信するには?

2023-01-17 09:36:12

質問

いくつかの変数と文字列を POST メソッドで送信したい。

データベースから文字列を取得し、それをPHPページに送信しています。私が使っているのは XMLHttpRequest オブジェクトを使用しています。

問題は、この文字列に含まれる文字 & という文字が数回含まれており、その $_POST の配列はこれを複数のキーのように見ます。

を置き換えてみると &\& と共に replace() という関数がありますが、何もしていないようです。

誰か助けてくれませんか?

javascriptのコードと文字列は次のようになります。

var wysiwyg = dijit.byId("wysiwyg").get("value");
var wysiwyg_clean = wysiwyg.replace('&','\&');

var poststr = "act=save";

poststr+="&titlu="+frm.value.titlu;
poststr+="&sectiune="+frm.value.sectiune;
poststr+="&wysiwyg="+wysiwyg_clean;
poststr+="&id_text="+frm.value.id_text;

xmlhttp.open("POST","lista_ajax.php",true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.send(poststr);

文字列は

 <span class="style2">&quot;Busola&quot;</span>

どのように解決するのですか?

あなたは encodeURIComponent() .

URLの中でそのままでは出現しない文字をすべてエスケープします。

var wysiwyg_clean = encodeURIComponent(wysiwyg);

この例では、アンパサンドキャラクタ & はエスケープシーケンス %26 に置き換えられます。