AJAX Post请求编码



我正在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();
});

最新更新