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()方法上(这不是真正的问题,它应该这样做)。正如您在上面的演示中看到的那样,当您使用它对特殊字符进行编码的方法时(应该如此)。你有两个选择:

  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 回答