我正在努力掌握使用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
方法的文章,我的猜测是它被用来重复调用提供状态信息的端点。