にすべてのスペースを変換しますjQueryのシリアル化はどこでも私はこのようにそれを使用する必要がシリアル化を使用して、現在、プラス
.serialize()(/ +/gで、 '%20')を交換してください;。
そうしないと、フォームデータ内のスペースはすべて+になります。これをデフォルトにする設定がありますか?
にすべてのスペースを変換しますjQueryのシリアル化はどこでも私はこのようにそれを使用する必要がシリアル化を使用して、現在、プラス
.serialize()(/ +/gで、 '%20')を交換してください;。
そうしないと、フォームデータ内のスペースはすべて+になります。これをデフォルトにする設定がありますか?
デフォルトがあるとは思わないので、文字列をone of these waysにエンコードする必要があります。
独自のプラグインを作成することができますが:
jQuery.fn.serializeAndEncode = function() {
return escape(this.serialize());
}
$(myForm).serializeAndEncode();
私は同じことをしなければなりませんでした。 テリーがエスケープ()で与えた解決策は機能しません。 =と&はエンコードされています(私たちはそれを望んでいません)+はまだそこにあります。私はシリアル化するために自分自身の関数を作成されたのは何
:楽しみのために
var QueryString = "";
$(selector).each(function(index) {
if(QueryString != "") QueryString += "&";
QueryString += $(this).get(0).id + "=" + encodeURIComponent($(this).val());
});
は、ここでは、一時的な変数を使用しない代替です:
$.fn.serializeAndEncode = function() {
return $.map(this.serializeArray(), function(val) {
return [val.name, encodeURIComponent(val.value)].join('=');
}).join('&');
};
$("#formToSerialize").serializeAndEncode();
これはまさに私が自分でやっていたことでした。 –
'エスケープを使用しないでください'。これは何年にもわたって非難されています(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Functions#escape_and_unescape_functions(Obsoleted_above_JavaScript_1.5)。これはinのように 'encodeURIComponent'に置き換えてくださいMatt Royの例。 – Husky