2011-01-10 7 views
0

私は、data: $("form#myform").serialize()を使用してjQueryフォームplugingで渡すデータを送信するために使用されています。現在のケースでは、フィールドが2つしかないので、別のフォームを作成するのは意味がありません。特別な 'のような文字や+やドイツ語のウムラウトのために正しくjQueryフォームプラグイン:フィールド値のシリアル化

function storeNotificationMessage(name) { 
    var content = $("textarea#" + name).val(); 
    var id = $('#id').val(); 

    content = encodeURI(content); // tried this 
    content = escape(content); // and that 

    $.ajax({ 
     async: false, 
     data: "entry=" + id + "&name=" + name + "&msg=" + msg, 
     type: 'post', 
     url: '?url=updateEntry', 
     success: function(response) { 
      done(); 
     } 
    }); 
} 

残念ながらどちらもencodeURIescape作品:そこで私は次の関数を作成しました。

質問:テキスト値をエンコードする正しい方法は何ですか?

+0

IIRCの場合、連想配列として 'data'を投稿すると、jQueryは値をエスケープする必要があります –

答えて

1

URLを扱うときはescapeでもencodeURIでも+も使用しないでください。単純にjqueryのにすべてのエンコードを残す:

function storeNotificationMessage(name) { 
    $.ajax({ 
     async: false, 
     data: { 
      entry: $('#id').val(), 
      name: name, 
      msg: $('textarea#' + name).val() 
     }, 
     type: 'post', 
     url: '?url=updateEntry', 
     success: function(response) { 
      done(); 
     } 
    }); 
} 

備考:async = falseでAJAXを使用しては非常にほとんど意味がないし、避けるべきです。