我在使用 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 的情况下提交,它不会使用此
字符格式化数据。有谁知道我为什么会遇到这个问题?
最佳答案
问题出在 .serialize()
方法上(这不是真正的问题,它应该这样做)。正如您从我上面的演示中看到的那样,当您使用它对特殊字符进行编码的方法时(应该如此)。您有两个选择:
在服务器端解码 url 编码的字符串。您没有提到您使用的是什么技术,但它们可能是可以为您完成此操作的功能。例如,对于 PHP,您可以使用
htmlspecialchars_decode("YOUR ENCODED STRING");
但所有服务器端语言都会有类似的东西(最佳选择)您可以手动构建发送到服务器端的字符串,而不是使用
.serialize()
。您可以将$("#newdata").serialize()
替换为键值对的对象文字:
{"InputId1": $("#InputId1").val(), "InputId2": $("#InputId2").val()}
编辑
刚刚看到您的文件的扩展名是 ASP,所以您使用的是经典的 asp。我不确定要解码的语法是什么,但我确信它很容易找到。
关于javascript - 使用 ajax 提交表单会导致 Charset 出现奇怪的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11422967/