使用jQuery和node express server获取进度回调

时间:2017-09-04 14:52:02

标签: javascript jquery ajax express

我正在努力掌握使用node express server和jQuery.ajax()的串联。我创建了一个具有以下结构的代码存储库:

/
|-public
| |-index.html
|-server.js

我的索引页面中包含以下JS代码段:

var successHandler = function (data, status, jqXHR) {
    console.log('success')
};

var failHandler = function (jqXHR, status, errorThrown) {
    console.log('fail')
};

var progressHandler = function () {
    console.log('progress')
};

var ajaxConfig = {
    url: 'http://localhost:4444/test',
    type: 'GET'
};

$.ajax(ajaxConfig).then(successHandler, failHandler, progressHandler);

服务器端代码定义如下:

const express = require('express')
const app = express()
const sleep = require('sleep')

app.get('/test', function (req, res) {
    console.log('/test method called!');
    sleep.sleep(3);
    res.status(202).send({"thing":"stuff"})
})

app.post('/test', function(req,res){
    res.status(202).send('ok')
})

app.use(express.static('public'))
app.use(express.static('node_modules/jquery/dist'))

app.listen(4444, function () {
    console.log('Running on localhost:4444!')
})

我想要完成的是获取进度处理程序的一些命中,只是为了让它在控制台中写入数据。

根据this page,我需要使用deffered.notify()方法来触发处理程序,但我不知道如何到达deffered对象。我尝试保存$ .ajax()的返回值,但似乎没有notify()方法,因为它是一个jqXHR对象。

据我所知,我需要在服务器端(/ test路由的post处理程序)上定义一个进程处理程序,该处理程序被调用以获取待处理任务的当前状态。不要以为制定新的ajax请求是可行的方法,但我可能错了。我还发现了一些使用setTimeout方法的文章,我的猜测是它被用来重复调用提供状态信息的端点。

0 个答案:

没有答案