Passport:登录POST请求将用户对象返回为字符串

时间:2016-08-27 03:23:35

标签: javascript ajax passport.js

我正在尝试通过Passport登录现有用户。登录成功完成,但user对象以字符串形式返回。这提出了一个问题,因为我在对象上运行for in循环;而不是在每个对象键上运行,它在每个字符上运行它。这是我的代码:

发布请求

PostRequest( '/auth/login', login, 'application/json', ( status, user ) => {

    if ( status == 200 ) {
        //If user is passed, then set cookie for user. Otherwise display error.
        for ( const key in user ) {
            console.log( key + " : " + user[key] );
        }

        window.open( "/user/" + user.username, "_parent" );
    } else {
        console.log("error");
    }

});

Ajax Call

function PostRequest( url, data, MIMEType, callback = undefined ) {

    data = JSON.stringify(data);
    xhr.open( 'POST', url );
    xhr.setRequestHeader( 'Content-Type', MIMEType );
    xhr.send( data );

    xhr.onload = () => {
        return callback( xhr.status, xhr.responseText );    
    }

}

如何将返回数据作为JSON对象而不是字符串?感谢所有帮助。

1 个答案:

答案 0 :(得分:1)

看起来user是一个字符串化对象(JSON)。如果是这样,您需要先使用JSON.parse解析它。

PostRequest( '/auth/login', login, 'application/json', ( status, user ) => {

    if ( status == 200 ) {
        //If user is passed, then set cookie for user. Otherwise display error.
        var userJson = JSON.parse(user);

        for ( const key in userJson ) {
            console.log( key + " : " + userJson[key] );
        }

        window.open( "/user/" + userJson.username, "_parent" );
    } else {
        console.log("error");
    }

});