4

JSONとjQuery(.toJSON関数でラップ)を介してAJAXとPOSTリクエストを介してサーバーに送信されるテキストフィールドがあります。PHP側では、私はやっていjson_decodeます。

すべてが機能しますが、アンパサンド(&)を中に入れると、POSTパラメーターが分割されるため、PHP側では不完全になります(少なくともvar_dump($_POST)書き込み中のもの)。

toJSONとjson_decodeがすべての仕事(エスケープ)を行うべきではありませんか?、、を試しましencodeURIComponentたが、機能しません。& to && to \u0026

私が間違っているのは何ですか?

AJAX呼び出し

function execute() {
    this.setupUrl();
    return $.ajax({
        type: this.requestMethod,
        data: this.getDataParams(),
        url: this.url
    });
}

function getDataParams() {
    if(this.data != undefined) {
        if(this.requestMethod == 'POST' || this.requestMethod == 'PUT') {
            return "data=" + $.toJSON(this.data);
        } else if(this.requestMethod == 'GET') {
            return this.data;
        }
    } else {
        return null;
    }
}
4

4 に答える 4

3

&としてエンコードする必要があります%26。そうするものを見つけてください。

于 2012-06-03T22:36:26.573 に答える
2

data答えは簡単です。文字列の代わりにオブジェクトを使用します。

たとえば、関数を次のように変更します。

return {data: $.toJSON(this.data)};

これは、POST を使用しているか GET を使用しているかに関係なく、どのような場合でも機能します。

于 2012-06-03T22:37:54.487 に答える
0

execute() にすでにあるので、「データ」は必要ありません。

if(this.requestMethod == 'POST' || this.requestMethod == 'PUT') {
                return $.toJSON(this.data);
            }
于 2012-06-03T22:41:42.340 に答える