2

私は長い文字列を取り、それをさらに処理するphp CodeIgniter関数にAJAXリクエストを介して送信するjavascript/jqueryコードを少し持っています。呼び出しは次のようになります。

var params = "str="+escape(JSON.stringify($('#element').find('html').get(0).outerHTML));
xmlhttp1 = new XMLHttpRequest();
xmlhttp1.open("POST", "http://www.url.com/controller/function", false);
xmlhttp1.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp1.setRequestHeader("Content-length", params.length);
xmlhttp1.setRequestHeader("Connection", "close");
xmlhttp1.send(params);

目的のouterHTMLをうまく渡しますが、escape()は、php関数に必要な「+」などの特定の文字をエスケープできません。これらの文字をエスケープするために使用できる別の関数はありますか、それとも php 関数に送信する前に、outerHTML を手動で処理する必要がありますか?

4

1 に答える 1

3

encodeURIComponent代わりに使用する必要があると思いますescape

var params = "str=" + encodeURIComponent(JSON.stringify($('#element').find('html').get(0).outerHTML));
于 2012-09-28T19:11:37.823 に答える