发布请求的正文为空

问题描述 投票:0回答:2

出于某种原因,我对mongodb数据库的jquery帖子请求的正文始终为空。我已经在其他应用程序(如失眠症和python终端)上尝试了相同的发布请求。

但是,此html脚本与快速服务器的目录位于同一目录中,因此无法发送发布请求

代码:

$("form").submit(function (event) {

            //getting the form data
            var input_values = $(this).serializeArray();
            var post_JSON = {};
            $.each(input_values, function (i, field) {
                post_JSON[field.name] = field.value;
            });
            console.log(JSON.stringify(post_JSON));

            //Post request to mongo db
            $.post("http://localhost:5000/users/add",                   // url
                JSON.stringify(post_JSON),                              // data to be submit

                function (data, status, jqXHR) {                        // success callback
                    console.log('status: ' + status + ', data: ' + data);
                },

                "json")
                .fail(function (xhr, status, error) {
                    console.log(xhr);
                });

用猫鼬模式定义的用户模式:

var UserSchema = new Schema({
    username: {
        type: String,
        required: true,
        trim: true,
    },
    password: {
        type: String,
        required: true,
    },
    favourites: [String],
    profile_img: Buffer,
    email: {
        type: String,
        match: /.+@.+/i, //Validates email ids
        unique: true,
        required: true,
    },
    search_history: [String],
    phone_number: {
        type: String,
        maxlength: 10,
        match: /^\d{10}$/,  //Validates phone number
    },
});

const User = mongoose.model('User', UserSchema);

module.exports = User;

这是控制台错误日志:enter image description here

错误发布请求错误之前的json是我尝试发送到数据库的实际数据。如果我要复制粘贴此json并在失眠时尝试发布,则可以。但是我需要它在这里工作。

jquery node.js mongodb express post
2个回答
1
投票

您无需在data: JSON.stringify(post_JSON)中使用字符串化。只需发送对象,jQuery将负责其余的工作。


0
投票

您需要将Content-type标头设置为application/json,以指示数据类型。由于Jquery.ajax使此操作变得更容易,因此建议您改用它:

$.ajax
({
    url: 'http://localhost:5000/users/add',
    type: 'post',
    data: post_JSON,
    contentType: 'application/json',
    dataType: 'json',
    success: function (data, status, jqXHR) {
        console.log('status: ' + status + ', data: ' + data);
    },
    error: function (xhr, status, error) {
        console.log(xhr);
    }
});
© www.soinside.com 2019 - 2024. All rights reserved.