【问题标题】:Issue sending json array via ajax to nodejs server问题通过ajax发送json数组到nodejs服务器
【发布时间】:2016-03-31 19:13:41
【问题描述】:

我通过 AJAX 发送到我的服务器 nodejs,这个 JS 在客户端:

function login(){
    var array=[];
    var jsonData={};
    jsonData.user=$('#user').val();
    jsonData.pass=$('#pass').val();
    array.push(jsonData);
    console.log(JSON.stringify(array));
    $.ajax({
        method:'POST', 
        url: 'auth',
        dataType: 'application/json',
        data: JSON.stringify(array)
    }).done(function(msg){
        alert( "Data Saved: " + msg );
    });
}

可以看到,在发送ajax之前,浏览器输出控制台是:

[{"user":"User001","pass":"SecretPassword"}]

在服务器端,我有这个代码:

router.post('/', function(req, res, next){
    console.log(req.body); 
    // { '[{"user":"User001","pass":"SecretPassword"}]': '' }

    console.log(JSON.parse(req.body));   
    // {"[{\"user\":\"User001\",\"pass\":\"SecretPassword\"}]":""}


    res.sendStatus(202);
}

但是,如果我使用 Postman 测试此 Web 服务,我的服务器会正​​确接收 Json 数据: Screen capture

请,有人帮助我吗??我尝试解决这个问题大约 2 天 :(

【问题讨论】:

  • 如果您发送的是 json,您应该将内容类型设置为 json
  • 是的。请看第一个代码片段:dataType: 'application/json',
  • 那不是内容类型,dataType是别的东西
  • 非常感谢。解决了:)

标签: javascript json ajax node.js


【解决方案1】:

不要对数据进行字符串化,应该是对象,所以可以直接发送jsonData:

function login(){
    var array=[];
    var jsonData={};
    jsonData.user=$('#user').val();
    jsonData.pass=$('#pass').val();
    array.push(jsonData);
    console.log(JSON.stringify(array));
    $.ajax({
        method:'POST', 
        url: 'auth',
        dataType: 'application/json',
        data: jsonData // << here
    }).done(function(msg){
        alert( "Data Saved: " + msg );
    });
}

【讨论】:

  • 不,我试过了,但无法解决问题。答案是这样的: contentType: 'application/json; ajax 调用中的 charset=utf-8'
【解决方案2】:

var invoiceJson = {name: "abc"};

$.ajax({
    url: url,
    type: "POST",
    dataType: "json",
    contentType: 'application/json; charset=utf-8',
    data: JSON.stringify(invoicejson),
    success: (data) => {
        try {
            console.log( data);
        } catch (err) {
            console.log( err);
        }
    }
})

【讨论】:

    猜你喜欢
    • 2013-09-19
    • 1970-01-01
    • 1970-01-01
    • 2021-07-30
    • 1970-01-01
    • 1970-01-01
    • 2011-03-11
    • 2011-06-12
    • 2013-12-27
    相关资源
    最近更新 更多