【问题标题】:Node js ajax post request节点js ajax发布请求
【发布时间】:2017-12-24 16:40:17
【问题描述】:

除了 Node js 和 AJAX POST 的错误外,Node 请求无法检查表单数据是否被正确处理,总是会下降到错误函数, 检查以下 AJAX 节点 JS 代码的任何解决方案

$("#submit_btn").click(function() {
    $.ajax({
        url: '/process_add',
        type: 'POST',
        dataType: "json",
        data: $('#process_form').serializeArray(),
        success:function(data) {
            alert('done');
        },
        error: function(errorThrown,data) {
            alert('Error');
        }
    });
});


router.post('/process_add', function(req, res, next) {

    var item = {
        name: req.body.name,
        content:req.body.content
    };

    mongo.connect(url, function(err, db) {
        assert.equal(null, err);
        db.collection('data_collection').insertOne(item, function(err, result) {
            assert.equal(null, err);
            console.log('Process added');
            db.close();
        });
    });
});

【问题讨论】:

  • 你得到什么错误信息?
  • 请提供更详细的主题/标题。
  • 我不确定,但我认为你需要通过 localhost 和端口传递整个 URL。
  • 我认为你不能在服务器端使用 jQuery。请改用 http.request。 nodejs.org/api/http.html
  • 仔细检查后,您似乎混淆了前端和后端代码。您能否将它们清楚地分开并按照其他人的建议包括错误消息?

标签: javascript jquery node.js ajax mongodb


【解决方案1】:

您的 AJAX 请求“/process_add”将指向您的 URL 的根。例如,abc.com 是您的域,此处的端点将是“abc.com/process_add”。 确保您的路由器存在于应用程序中“/”的根引用中。类似这样的东西

app.js

var index = require('./routes/index');    
app.use('/',index);

路由/index.js

    router.post('/process_add', function(req, res, next) {

        var item = {
            name: req.body.name,
            content:req.body.content
        };

        mongo.connect(url, function(err, db) {
            assert.equal(null, err);
            db.collection('data_collection').insertOne(item, function(err, result) {
                assert.equal(null, err);
                console.log('Process added');
                db.close();
            });
        });
    });

编码愉快!

【讨论】:

    【解决方案2】:

    您需要将该 api 的 ('/') 根添加到 Ajax 请求。post 有 (/process_add) 提示不是该 api 的根,所以如果索引是根 ('index/process_add)

    【讨论】:

    • 例如,如果路由器使用app.use('/index', router); 挂载,那么url 将是/index/process_add 而不是/process_add
    • 正确,但它正在寻找 app.use('/process_add')
    • 我在路由文件夹的上下文中使用 root。请记住,如果您为应用程序路由单独的 JS 文件,您的“根”频道将会改变
    猜你喜欢
    • 1970-01-01
    • 2017-10-13
    • 1970-01-01
    • 2013-04-11
    • 1970-01-01
    • 2023-02-19
    • 2014-05-29
    • 1970-01-01
    • 2015-09-15
    相关资源
    最近更新 更多