2014-12-08 117 views
0

我正在C++中实现一个HTTP服务器,并通过jQuery向其发送Ajax POST请求。AJAX发布请求编码

我有我的网页上,我提交使用此代码的一种形式:

$('#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'字段。现在这个表单是这个编码问题发生的唯一的一个。

是否有任何其他类型的编码字段,我可以设置,以防止这种garbling?我尝试了一切,我可以找到,没有任何帮助。

任何帮助将不胜感激,我已经花了几个小时了。

编辑: 我现在转换为unix时间戳客户端,并没有gar,,它必须有与URL编码的空间和冒号有关。

回答

0

若要创建查询字符串,您应该尝试使用$(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(); 
}); 
+0

看起来你是对的,所以我切换到.serialize()。但它并没有改变任何事情。 – holdennb 2014-12-08 03:04:17

+0

并且您是否删除了contentType? – Todd 2014-12-08 03:06:39

+0

删除contentType只是使歪斜变得更糟,就像通常那样。 – holdennb 2014-12-08 03:12:10