Javascript 我不明白这一小块代码是什么意思

Javascript 我不明白这一小块代码是什么意思,javascript,jquery,node.js,ajax,Javascript,Jquery,Node.js,Ajax,因此,在阅读了十几篇教程和帖子之后,我发现“/todo/”item是该代码向其发送请求的URL,但整个URL+/todo/”item是吗?但是当我输入http url时,页面无效。我在每次请求之前和之后基本上都输入了所有可能的http URL,并且只输入了“”作为主页,没有其他URL。(例如,当item的值为chair时,此->应该可以工作,但不能)。还有什么原因需要将此Ajax请求专门发送到特定的https://URL 我特别提到的代码来自文件“todo list.js” 对于更广泛的上下文,

因此,在阅读了十几篇教程和帖子之后,我发现“/todo/”item是该代码向其发送请求的URL,但整个URL+/todo/”item是吗?但是当我输入http url时,页面无效。我在每次请求之前和之后基本上都输入了所有可能的http URL,并且只输入了“”作为主页,没有其他URL。(例如,当item的值为chair时,此->应该可以工作,但不能)。还有什么原因需要将此Ajax请求专门发送到特定的https://URL

我特别提到的代码来自文件“todo list.js”

对于更广泛的上下文,下面是名为“todoController.js”的代码文件

这是启动名为“index.js”的应用程序的主代码

另一个用于此应用程序的代码文件名为“todo.ejs”


事項清單
我的待办事项清单
添加项

这很让人困惑,但据我所知,您想了解代码,这里是我的想法,ajax正在通过资源(即todo/:item)发出HTTP删除请求

在服务器上由以下代码接收

app.delete('/todo/:item', function(req, res){

如果您在postman(而不是浏览器)中使用适当的设置运行此功能,您将能够看到它正在工作。希望有帮助。

当您在浏览器地址栏中键入URL并按enter键时,浏览器将向服务器发出
GET
请求。如果检查您的服务器代码(您提供的第二个文件),则URL
/todo/:item
仅接受
删除
请求。这就是为什么当您从浏览器访问该URL时会得到无效页面的原因。但是URL
/todo
同时定义了
GET
POST
方法。这就是为什么当您从浏览器点击该URL时,服务器中定义了
GET
响应

谢谢你的回答。所以我仍然感到困惑的是,我的代码上写着
url:'/todo/'+item
,这意味着url必须存在,对吗?但当我输入那个http URL时,它根本不存在。为什么会这样?您能在浏览器窗口中打开Console并检查是否有任何错误吗。由于这是一个Ajax请求,您可能会在“网络”选项卡中找到该调用,这将使您对错误有更多的了解。(同时请检查您的后端服务器是否正在运行)因此。。我在浏览器中检查了控制台,这是我得到的错误:分析“完整性”属性时出错('sha256-CSXORXVZCTKAIX6YVO6HPPCZGETBYMGWSFLBW8HFCWJO=')。摘要必须是有效的base64编码值。啊。。。我懂了。。。所以,用外行的话说,“URL不存在,对吗?或者在处理删除请求时,它是否存在一瞬间?它不存在。因为您的服务器js文件中没有相应的代码。要使GET请求处理该URL,必须有类似于
app.GET('/todo/:item',function(req,res)的内容{…
在您的服务器代码中。我刚刚添加了为提供完整上下文而编写的整个代码文件,我的代码具有
app.get('/todo',function(req,res){res.render('todo',{todos:data});})
某个地方。好吧,对不起,但是…我仍然很困惑,为什么如果“/todo/:item”URL根本不存在,它仍然必须将删除请求发送到“/todo/:item”URL。您能告诉我为什么吗?为什么原始代码要将删除请求发送到“/todo/:item”?您如何向根本不存在的URL发送请求?
var bodyParser = require('body-parser');

var data = [{item: 'chair'}, {item: 'flower'}, {item: 'bed'}];
var urlencodedParser = bodyParser.urlencoded({extended: false});

module.exports = function(app) {

app.get('/todo', function(req, res){
    res.render('todo', {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);
});

};
var express = require('express');
var app = express();

var todoController = require('./todoController');
app.set('view engine', 'ejs');

app.use(express.static('./'));

todoController(app);


app.listen(5000, '127.0.0.1');
<html>
   <head>
    <title>Todo List</title>
    <script
    src="https://code.jquery.com/jquery-3.4.1.min.js"
    integrity="sha256- 
    CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo="
    crossorigin="anonymous"></script>
    <script src="assets/todo-list.js"></script>
    <link href="assets/styles.css" rel="stylesheet" 
     type="text/css">
  </head>
  <body>
    <h1>My Todo List</h1>
    <div id="todo-table">
      <form>
        <input type="text" name="item" placeholder="Add new 
         item..." required />
        <button type="submit">Add Item</button>
      </form>
      <ul>

              <% for(var i=0; i < todos.length; i++){ %>
                <li><%= todos[i].item %></li>
              <% } %>

      </ul>
    </div>

  </body>


</html>
$.ajax({
        type: 'DELETE',
app.delete('/todo/:item', function(req, res){