我正在C++中实现一个HTTP服务器,并通过jQuery向其发送Ajax POST请求。
我在我的一个页面上有一个表单,我使用此代码提交:
$('#create-event form').submit(function(e) {
var postData = $(this).serializeArray();
var formURL = $(this).attr('action');
$.ajax({
url : formURL,
type: 'POST',
data : postData,
contentType: 'text/plain'
});
e.preventDefault();
});
当我在C++收到此请求时,查询参数的最后 ~10 个字符是一团乱麻,好像编码错误。问题是,我有很多这种类型的表单,同样的乱码也发生在其他表单上,直到我添加了contentType: 'text/plain'
字段。现在,这种形式是唯一发生这种编码问题的形式。
是否可以设置其他类型的编码字段来防止这种乱码?我已经尝试了我能找到的一切,但没有任何帮助。
任何帮助将不胜感激,我已经为此花费了几个小时。
编辑:我现在转换为 unix 时间戳客户端并且没有乱码,它一定与 URL 编码的空间和冒号有关。
若要创建查询字符串,应尝试使用 $(this).serialize()
而不是序列化数组。
$('#create-event form').submit(function(e) {
var postData = $(this).serialize();
var formURL = $(this).attr('action');
$.ajax({
url : formURL,
type: 'POST',
data : postData,
contentType: 'text/plain'
});
e.preventDefault();
});