Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

143
Views
Get ajax call progress status in front end

I have a web page which allows users to upload and process specific files. After an user uploads some files, after clicking the 'Process' button an ajax call is being sent to a backend service. In the beforeSend function there is an overlay applied to the screen and a spinner is displayed. When the success function is triggered, then the overlay is removed and a toast notification is being shown like 'Files were processed!' My goal is to somehow show a progress status for each file based on specific checkpoints in the backend service. Let's say that the backend service when called does following tasks: parse file, map to specific format, send data to database A.... and in the end it sends back http status 200 and a JSON like

{
   "status":"Success",
   "message": "File X was processed"
}

Now what I want is that instead of just getting an overlay and disabling the whole page until the success event is triggered, to have a progress bar which is updated for each file based on the exact step where the backend has reached.

For instance, for file A, I would like to see below transitions: 5 % Parsing file, 10 % Mapping file...90% sending data to database, 100% processed.

Is this somehow achievable?

about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

There are few points that you need to look into.

Usually in production code, we need to have timeouts. If you are making an ajax call to the backend API, there will be a timeout associated with that api call. Suppose if the timeout is more than 2 mins, then it will send you a 504 Gateway timeout error.

To overcome this and to implement the functionality which you want, you can have any DB(lets consider SQL server). In your SQL server, make a table: Process_Table With schema: Process_id( Will store the process id/name ) Percentage( Will store the percentage ) At_step ( Parsing, Mapping, Sending to DB etc)

Using Javascript(Or any framework of your choice), use setInterval(), to make check_process() api calls. For check_proceess, you can pass in the process_id, and check against the db. For interval, you can set it to 5 seconds. So that every 5 seconds the call is made.

You can read the response of those API calls and do your processing.

about 4 years ago · Juan Pablo Isaza Report

0

An HTTP request consists of a request and a response. There's no direct way to get status updates beyond the onprogress event which would let you see how much data has been transferred. This is useful for determining how much of the data has been sent to the server, but not so much for how far the server has got with working with that data.

You could store progress in a database and poll a webservice to read the most recent status.

You could also have the server push updates to the client using Websockets for bi-directional communication.

A rough outline for such a system might look like:

  1. Open a Websocket
  2. Send files with Ajax
  3. Get server generated ID back in HTTP response
  4. Pay attention to messages coming over the Websocket that mention that ID

You could also look at doing the whole thing over Websockets (i.e. upload the files that way too). A quick Google search turns up this library for uploading files to a Websocket service hosted on Node.js.

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!