Send arguments and file with Ajax to NodeJs

how to get data from ajax request in node js
node.js form submit ajax
node js ajax post
jquery ajax
node js ajax login
ajax mongoose node js
nodejs ajax mysql
node js ajax crud

Actually, i have a problem with my code and i don't see where is the problem.

I have this AJAX part which take a file from a form and an argument and send it to my nodejs server :

var layerID = 2;
var formData = new FormData($("#formid")[0]);
formData.append('layer', layerID);
  $.ajax({
     url: "http://localhost:3000/file-upload",
     type: 'POST',
     data: formData,
     cache: false,
     contentType: false,
     processData: false
  });

and i have this part with express which is supposed to receive the file and the argument:

app.use(bodyParser.urlencoded({
   extended: false
}))

app.post('/file-upload', function (req, res) {
  console.log('params: ' + req.params);
    console.log('body: ' + req.body);
    console.log('query: ' + req.query);
  upload(req, res, function (err) {
    if (err) {
      errorHandler
      return
    } else {
      successHandler
    }
  })
})

My problem is that i correctly receive the file but i don't receive the argument 'layer' in my nodejs server. Can someone help me correct this error please ? Thanks.

Using $.ajax post to send data to node.js server, I have an html form on my webpage and when I click submit I want the form contents to add another object to my JSON file. I've been looking all  The term AJAX is a pseudo-acronym for "Asynchronous JavaScript And XML," but is now used much more broadly to cover all methods of communicating with a server using JavaScript. As we will see, Ajax is not always asynchronous and does not always involve XML. Node.js is an open-source, cross-platform server that runs JavaScript on the server-side; we'll use Node.js as the back end for our Ajax

You can use packages like multiparty for parsing multipart data in following way. There are other packages as well.

Backend Code
const multiparty = require('multiparty');

         // Define POST route
 app.post('/file-upload', function (req, res) {
     const form = new multiparty.Form();

     form.parse(request, async (error, fields, files) => {
       if (error) throw new Error(error);

       try {
         const path = files.file[0].path;
         const layer = fields && fields.layer && fields.layer[0]
         const buffer = fs.readFileSync(path);

         // TODO 

         return response.status(200).send(data);
       } catch (error) {
         return response.status(400).send(error);
       }
     });
 }

You can use it this way. You can read from fields.

Client Code
const formData = new FormData();
formData.append('file', fileObj);

uploadHandler(formData) // this function will make an API call

Now you will be able to get files.file[0]

passing variable via ajax, loadScript = function (url, data, callback) { jQuery.ajax({ url: url, success: How do I get the pass in parameter when loading an external Is there another way of loading external js file on the same server while passing in parameters? 1 Unfortunately browser javaScript is a few steps behind node.js. In short, your server-side Javascript is held in the app.js file, while the client-side file(s) will be placed in the “javascripts” directory. Keep this in mind as we go through the remainder of the tutorial as it’s important to understand both the relationship between client and server-side Javascript as well as the ability to

I found the solution, the solution was to simply move my log of req.body in the upload function and call it like that: console.log("layer: " + req.body['layer']);

AJAX Send an XMLHttpRequest To a Server, The url parameter of the open() method, is an address to a file on a server: xhttp.​open("GET", "ajax_test.asp", true);. The following is an example of AJAX. Combining HTML and AJAX is front-end operation while Node.JS with DB (e.g. MongoDB) is the backend operation. (1) Take button click event and take attribute from 'data-id'. (2) Run AJAX DELETE method. You should make sure that its Method and URL are correctly match between AJAX side and Node.JS + DB side.

Handling AJAX calls with Node.js and Express (scraping Craigslist), Handling AJAX calls with Node.js and Express (scraping Craigslist) In short, your server-side Javascript is held in the app.js file, while the As I stated before, we pass the parameters (which is an object) to the server side. node.js documentation: A simple implementation of AJAX. Example. You should have the basic express-generator template. In app.js, add(you can add it anywhere after var app = express.app()):

How to Send JavaScript Array to the AJAX using jQuery and PHP, In this tutorial, I show how you can pass JavaScript Array to an AJAX request with <br/> <input type="checkbox" name="prolang" value="NodeJS"> NodeJS <br/> PHP. Create a new getData.php file. Store $_POST values. How to send parameters to the server side in io.js (nodejs) with ajax - iojs-ajax // and how to retrieve it from the server side to save it in a file

How to pass multiple parameters in a URL in jQuery Ajax, There are probably upward of a dozen different ways to do it, but my favourite is to put all the parameters together into a single array and then use JSON to send  In the tutorial, we show how to integrate NodeJS/Express with JQuery Ajax POST/GET requests and Bootstrap view. Related posts: – How to build NodeJS/Express Bootstrap views – NodeJS/Express – save form data to MySQL using Sequelize ORM – Ajax JQuery + Bootstrap view ContentsGoalPracticeSetting up NodeJS/Express projectImplement Bootstrap viewsImplement JQuery Ajax requestsImplement

Comments
  • The upload part is the usage of multer. var upload = multer({storage: storage]).single('photo') in storage i declare the destination and the filename with multer.diskStorage.
  • I tried your code and now it says that files.file[0] is undefined, do i have to send the picture in a new way with multiparty ?
  • No, I'll update answer to have client code as well. BTW, can you check files object once?