【问题标题】:Post request data to json in node将请求数据发布到节点中的 json
【发布时间】:2014-10-17 04:01:36
【问题描述】:

我正在发送一个简单的 ajax-jQuery 发布请求:

$('#postButton').click (function () {
        var empInfo = $('#empForm').serialize();
        var empData = JSON.stringify(empInfo,null,2);

    $.ajax({
          type: 'POST',
          dataType: 'JSON',
          url: 'http://localhost:3000/post',
          data: empData, // check how to stringfy to json and send() .
          success: function(serverData){
              $('.thankU').html(serverData);
          }
        });

我已经尝试了所有我知道的方法来在节点服务器上将数据转换为 json 格式:

app.post('/post', function(req, res){

    // get query params as object
    req.on('data', function(chunk) {
        console.log("Received body data:");
        console.log(chunk.toString());
        console.log(JSON.parse(chunk) );
        console.log(qs.parse(chunk) );
        console.log(JSON.stringify(chunk));
    });
});

结果是:

Received body data:
"bname=jjj&burl=jfjfj.com&bEmail=ff&bPhone=0608584884&fieldSelected=webPro"
bname=jjj&burl=jfjfj.com&bEmail=ff&bPhone=0608584884&fieldSelected=webPro

而不是它出现在开发者工具\网络中的方式:

"bname:jjj
burl:jfjfj.com
bEmail:ff
bPhone:0608584884
fieldSelected:webPro"

【问题讨论】:

    标签: jquery json node.js http-post


    【解决方案1】:

    jquery serialize method 从以下形式创建一个编码字符串:http://api.jquery.com/serialize/

    要获取 json 对象,请尝试使用 serializeArray http://api.jquery.com/serializeArray/ 代替。 或者手动创建您的 json 对象并读取每个表单元素的 $().val() 值...

    您的其他代码看起来不错,您必须对对象进行字符串化并将其发布到服务器。

    【讨论】:

    • 我在其他具有相同选择的表单上使用了序列化方法,并且效果很好,唯一的区别是请求类型(get)而不是我现在尝试的帖子。
    • 正如您在开发者工具\网络中看到的那样,它以 json 格式发送。
    • 如果您发帖,jquery 会将data 放入帖子正文中,并且通过序列化,这将只是一个编码字符串而不是 json 对象... "bname=jjj&burl=jfjfj.com&bEmail =ff&bPhone=0608584884&fieldSelected=webPro" 不是 json。 "{bname:jjj, burl:jfjfjcom...}" 将是 json
    • 我使用:var empInfo = $('#empForm').serialize(); var empData = JSON.stringify(empInfo,null,2);在我发送 ajax 之前。我没有说我 100% 确定问题出在节点上。
    • empInfo 已经是一个字符串。 JSON.stringify 在那一点上什么都不做,它只是将字符串字符串化^^
    【解决方案2】:

    尝试改变

    dataType: 'JSON',
    

    到:

    dataType: 'json',
    

    【讨论】:

    • 其他请求中的dataType也是'JSON',这不是问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-10
    • 1970-01-01
    • 1970-01-01
    • 2011-11-27
    • 2017-12-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多