0
$('form').on('submit', function(submitEvent)
{
$('table[id*=OtherOptions] :input').attr('disabled', false);
$('#collapsiblePanel :input').attr('disabled', false);
if (preventSubmit)
{
submitEvent.preventDefault();
populateDateValues();
populateContextFilterValues();
if($.browser.msie)
{
$('#collapsiblePanelHiddenValues').val(JSON.stringify(collapsiblePanelObj));
}
var form = $(this);
var formInput = decodeURIComponent(form.serialize());
$.getJSON('ValidateParams', formInput, function(data)
{
// Some more code here...
上記のコードでは、フォームデータでstruts2アクションの検証呼び出しを行っていますが、フォームフィールドに#または%が値として含まれている場合は、サーバー側では、これらの特殊文字の後のすべてのパラメーターが要求パラメーター・マップに入っていません。特殊文字を含む値でフォームを送信する
上記の問題の解決方法は何ですか?
フォーム入力を送信する前に 'decodeURIComponent'を行うつもりはありますか?私はあなたの意図が送信のためにencodeURIComponentでなければならないと確信しています。 [このサイト](http://www.the-art-of-web.com/javascript/escape/)をチェックし、その内容を確認してください。 – veeTrain
私はフォームの入力をこのようにサーバー側で送信する場合私はパラメータ値とその値として値をキーとして要求パラメータマップを取得しますが、私はencodeURIComponentを使用する場合、私はすべての文字コード化される。それは私が望むものではありません、私はそれがパラメータの重要な値のマップとして来ることを望みます。助言がありますか? – gags
私はdecodeURIComponentを呼び出さずに、シリアライズされたフォームデータをサーバー側に送信するだけで、問題を解決できました。ここで、エンコードされたデータはstruts2によって自動的にデコードされます。 – gags