2012-05-07 15 views
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アクションの検証呼び出しを行っていますが、フォームフィールドに#または%が値として含まれている場合は、サーバー側では、これらの特殊文字の後のすべてのパラメーターが要求パラメーター・マップに入っていません。特殊文字を含む値でフォームを送信する

上記の問題の解決方法は何ですか?

+0

フォーム入力を送信する前に 'decodeURIComponent'を行うつもりはありますか?私はあなたの意図が送信のためにencodeURIComponentでなければならないと確信しています。 [このサイト](http://www.the-art-of-web.com/javascript/escape/)をチェックし、その内容を確認してください。 – veeTrain

+0

私はフォームの入力をこのようにサーバー側で送信する場合私はパラメータ値とその値として値をキーとして要求パラメータマップを取得しますが、私はencodeURIComponentを使用する場合、私はすべての文字コード化される。それは私が望むものではありません、私はそれがパラメータの重要な値のマップとして来ることを望みます。助言がありますか? – gags

+0

私はdecodeURIComponentを呼び出さずに、シリアライズされたフォームデータをサーバー側に送信するだけで、問題を解決できました。ここで、エンコードされたデータはstruts2によって自動的にデコードされます。 – gags

答えて

0

私はdecodeURIComponentを呼び出さず、シリアライズされたフォームデータをサーバー側に送信して、エンコードされたデータがstruts2によって自動的にデコードされるという問題を解決できました。

関連する問題