javascript - Express js 4,Parse.com JSON 错误

标签 javascript jquery node.js express parse-platform

我正在尝试向 Parse.com 上托管的 Express JS 服务器发送 POST 调用。我这样发送数据:

var data = new Array();     
    data["firstName"] = firstName;
    data["lastName"] = lastName;
    data["dateOfBirth"] = dateOfBirth;
    data["mobileNumbe"] = mobileNumber;
    data["email"] = email;
    data["reEmail"] = reEmail;
    data["pw"] = pw;
    data["rePw"] = rePw;

    $.ajax({
            url: "/api/post/registerclient",
            type: "POST",
            dataType: "application/json",
            data: { data:data
                  },
            success: function(result){
                disabledButton("buttonRegister",false);
                if(data.success == true){
                    console.log("Neu registriert");
                }else{
                    showErrorMessageWithError(result.error);
                }
            },
            error:function(error){
                disabledButton("buttonRegister",false);

                var string = "Es ist ein Fehler aufgetreten!"
                showErrorMessageWithError(string);
            }
        });

在服务器端,我尝试用req.body.data捕获数据,但它是空的:

exports.registerClient = function(req,res){

//Data, get = firstName, lastName, dateOfBirth, mobileNumber, email, reEmail, pw, rePw
//Data, respond = success, error
var validation = helper.validateRegisterClient(req.body.data);


if(validation.length == 0){
    var user = new Parse.User();
    user.set("username", req.data.email);
    user.set("password", req.data.pw);
    user.set("email", req.data.email);

    //optional fields
    user.set("mobileNumber", req.data.mobileNumber);
    user.set("firstName", req.data.firstName);
    user.set("lastName", req.data.lastName);
    user.set("dateOfBirth", req.data.dateOfBirth);

    user.signUp(null, {
        success: function(user) {
            // Hooray! Let them use the app now.
            var success = true;
            var error = "";

            var json = {success: success, error: error};
            res.json(json);
        },
        error: function(user, error) {
            var success = false;

            var json = {success: success, error: error};
            res.json(json);
        }
    });
}else{
    var success = false;
    var error = validation;

    var json = {sucess: success, error: error};
    res.json(json);
}
}

我有一种感觉,我的 Express 应用程序可能配置错误,所以这是我的“init”:

var express = require('express');
var parseExpressHttpsRedirect = require('parse-express-https-redirect');
var parseExpressCookieSession = require('parse-express-cookie-session');
var app = express();

// Global app configuration section
app.set('views', 'cloud/views');  // Specify the folder to find templates
app.set('view engine', 'ejs');    // Set the template engine
app.use(parseExpressHttpsRedirect());
app.use(express.bodyParser());    // Middleware for reading request body
app.use(express.cookieParser('xxxxxxxxxxxxxxxxxxxx'));
app.use(parseExpressCookieSession({ cookie: { maxAge: 3600000 } }));

最佳答案

您的快速代码中有一个拼写错误。您引用了 req.data,而它应该是 req.body.data:

例如,这个:

var user = new Parse.User();
user.set("username", req.data.email);
user.set("password", req.data.pw);
user.set("email", req.data.email);

应该是这样的:

var user = new Parse.User();
user.set("username", req.body.data.email);
user.set("password", req.body.data.pw);
user.set("email", req.body.data.email);

此外,您的初始数据数组实际上是一个对象,应该以不同的方式实例化。所以这个:

var data = new Array();

应该是这样的:

var data = {};

我刚才注意到的另一件事是您在 ajax 成功回调中引用 data.successdata.success 在此范围内不存在。这应该是result.success

所以这个:

            if(data.success == true){
                console.log("Neu registriert");
            }else{
                showErrorMessageWithError(result.error);
            }

应该是:

            if(result.success == true){
                console.log("Neu registriert");
            }else{
                showErrorMessageWithError(result.error);
            }

关于javascript - Express js 4,Parse.com JSON 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30735040/

相关文章:

javascript - 带有正则表达式的 grunt glob 文件?

javascript - 使 Socket.io 路径与 NGiNX proxy_pass 一起使用

jquery - 单击 div 中的任何图像时更改 img src

javascript - getJSON 值每个

javascript - 有没有办法让我可以 console.log 一次?

node.js - Socket.io 不适用于 nginx

javascript - 每 5 秒检查一次 div 的高度,如果 true 则更改类

javascript - 反向ajax和普通ajax的区别

javascript - 如何在 javascript 中单击按钮时增加文本框(月份)名称

node.js - 因为它的 MIME 类型 ('text/html' ) 是不可执行的,并且启用了严格的 MIME 类型检查