如何使用节点

时间:2019-12-26 18:39:54

标签: jquery node.js ajax

在尝试将照片上传连接到表单之前,我的网络应用程序运行良好。

现在,看来节点没有收到任何被冻结的表单字段!

HTML
==========

<form method="post" action="#" enctype="multipart/form-data">
        <input type="text" name="labelForPhoto" />
        <input type="file" name="imgUploader" />
        <input type="submit" value="savephoto">
</form>

OR

<form method="post" action="#" enctype="multipart/form-data">
        <input type="text" name="username" />
        <input type="password" name="password" />
        <input type="submit" value="login">
</form>


JS
================

var formData = new FormData(this);

$.ajax({
    type: "post",
    data: data, 
    url: "http://localhost:8080/savephoto", // or /login
    xhrFields: {withCredentials: true},
    contentType: false, 
    processData: false, 
    enctype: 'multipart/form-data',
    cache: false,
    success: function(data, textStatus, xhr)
    {
        console.log("success");
    },
    error: function()
    {
        console.log("error");
    }
 });


NODE
============

const express = require("express");
const app = express();
const cors = require('cors');
const port = 8080;
const session = require('express-session');
const router = express.Router();

app.use(function(req, res, next) {
  res.header("Access-Control-Allow-Origin", "http://localhost");
  res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
  res.header("Access-Control-Allow-Credentials", "true");
  next();
});


app.use(express.urlencoded());


/* this calls the session function for every request to the end point */
app.use(session({
  secret: 'work hard',
  resave: true,
   saveUninitialized: false,
     cookie: {
    maxAge: 36000000,
    httpOnly: false // <- set httpOnly to false
  }
}))

router.get("/savephoto", function(req, res){
    Users.all(function(err, results){
        console.log(req.body.labelForPhoto); ////// THIS IS ALWAYS UNDEFINED NOW
    });
});

router.get("/login", function(req, res){
    Users.all(function(err, results){
        console.log(req.body.username); ////// THIS IS ALWAYS UNDEFINED NOW
    });
});

当我将表单放回没有多部分的内容,并且摆脱了JavaScript IE中的FormData对象时,请删除AJAX调用所需的fileupload内容,然后按预期方式再次发送表单字段。

我试图添加多部分表单内容,以便可以通过ajax将带有标题和其他详细信息的图像发送到服务器。

1 个答案:

答案 0 :(得分:0)

一旦开始使用AJAX,您获得数据的方式就会稍有不同。参见this answer