为什么要将数据传递给AJAX请求的“成功”function?

最近我开始学习jQuery和AJAX,并与AJAX请求有点混淆。

为了实践,我正在使用NodejQueryBootstrap来制作一个非常基本的TodoApp。 我真的很困惑所有这些GET和POST请求。 我终于理解了这些,但我不明白为什么我们需要发送POST请求后通过'成功'function发回数据。 然而,我做了,从成功函数中删除数据参数,并试图这样做,但它给了我一个错误,但刷新页面后,我可以看到我的项目已进入。

编辑:这是关于用户添加项目时发生的POST请求。

我列出了所有我认为与这个问题相关的文件以及相关的依赖关系。

依赖:Express,Handlebars(我使用的模板引擎),Bootstrap,jQuery。

  • app.js包含实际快递应用程序的代码。
  • main.js包含ajax请求。
  • todoController.js包含请求的处理程序。
  • todo.hbs是当用户访问'/ todo'时得到的handlebars文件,

app.js“`

var express = require('express') var hbs = require('express-handlebars').create({ defaultLayout: 'main', extname: '.hbs', layoutsDir: __dirname + '/views/layouts', partialsDir: __dirname + '/views/partials' }) var todoController = require('./controllers/todoController') var app = express() app.set('port', process.env.PORT || 3000) app.engine('hbs', hbs.engine) app.set('view engine', 'hbs') app.set('views', __dirname + '/views') app.use(express.static(__dirname + '/public')) todoController(app) app.listen(app.get('port'), function(){ console.log('...' + app.get('port') + '...') }) 

“`

main.js(在公共文件夹内)“`

 $(document).ready(function(){ $('.jumbotron').hide().fadeIn(500) $('#add-button').on('click', function(){ var todo = $('#todo-input').val() $.ajax({ type: 'POST', url: '/todo', data: {item: todo}, success: function(data) { location.reload() }, error: function(){ alert('something went wrong.') } }) }) $('.todos-list').on('click', function(){ var item = $(this).val() $.ajax({ type: 'DELETE', url: '/todo/' + item, success: function(){ location.reload() } }) }) }) 

“`

todoController.js“`

 var bodyParser = require('body-parser') var urlEncodedParser = bodyParser.urlencoded({extended: false}) var data = [ { item: 'Get shit.' }, { item: 'Get milk.' } ] module.exports = function(app) { app.get('/todo', function(req, res){ res.render('todo', {title: 'TodoApp', todos: data}) }) app.post('/todo', urlEncodedParser, function(req, res){ data.push(req.body) res.json(data) }) app.delete('/todo/:item', function(req, res){ data = data.filter(function(todo){ return todo.item.replace(/ g/, '-') !== req.params.item }) res.json(data) }) } 

“`

todo.hbs“`

 <input type="text" id="todo-input"/> <button type="submit" id="add-button">Add Item</button> <ul class="todos"> {{#each todos}} <li class="todos-list">{{this.item}}</li> {{/each}} </ul> 

“`

客户端 – 服务器范例的作用是客户端向服务器发出请求(GET,POST,PUT,DELETE等),服务器接收它,执行相同的操作(通常涉及数据库),并根据请求types发送响应给客户。 在GET请求中,客户端请求一个特定的值,返回的值是强制性的。 在POST请求中,通常客户端要求服务器将相同的数据存储到数据库中,并且由于在服务器端可能发生任何错误,因此在确认或响应时发生错误是很重要的。

在考虑完全执行请求之前,这是客户端在任何情况下都需要来自服务器的响应的主要原因。