3

ここで、Ajax 経由で投稿されたフォームに問題があります。

ここに私のjQueryコードがあります:

    <script type="text/javascript" language="javascript" charset="utf-8">
    $(document).ready(function(){
      $("#newdata").submit(function(event) {          
        event.preventDefault();          
        $.post( "save.asp",  $("#newdata").serialize() , 
          function( data ) {  
        });           
      });
    });
    </script>

問題は、特殊文字を含むデータを送信したり、前に を付けて保存し®たりする場合です。しかし、jQuery/Ajax なしで送信すると、この文字でデータがフォーマットされません。なぜ私がこの問題を抱えているのか誰か知っていますか?©ÂÂ

4

2 に答える 2

1

http://jsfiddle.net/aTS67/2/

問題は.serialize()メソッドにあります (実際には問題ではなく、これを行う必要があります)。上記のデモからわかるように、このメソッドを使用すると、特殊文字がエンコードされます (必要な場合)。次の 2 つのオプションがあります。

  1. サーバー側で URL エンコードされた文字列をデコードします。使用しているテクノロジーについては言及していませんが、おそらくこれを行う機能です。たとえば、PHP の場合は使用できますhtmlspecialchars_decode("YOUR ENCODED STRING");が、すべてのサーバー側言語に似たものがあります (最良のオプション)。

  2. を使用する代わりに.serialize()、サーバー側に送信される文字列を手動で作成できます。$("#newdata").serialize()キーと値のペアのオブジェクト リテラルに置き換えることができます。

{"InputId1" : $("#InputId1").val(), "InputId2" : $("#InputId2").val()}

編集

ファイルの拡張子が ASP であることを確認したので、従来の ASP を使用しています。デコードする構文はわかりませんが、簡単に見つけることができると確信しています。

于 2012-07-11T00:38:56.140 に答える
0

他の誰かがこの問題を抱えている場合に備えて、解決策は<%@codepage=65001%>受信ページの上部にあることです. jquery.serialize() は utf8 を使用してシリアル化し、これにより基本的に受信ページが正しいコードページに配置されます。

注: これはクラシック ASP 用です。

ソース: http://api.jquery.com/serialize/

于 2012-07-11T02:07:24.497 に答える