删除 http://localhost:3000/people/[object%20Object] 404(未找到)

Posted

技术标签:

【中文标题】删除 http://localhost:3000/people/[object%20Object] 404(未找到)【英文标题】:DELETE http://localhost:3000/people/[object%20Object] 404 (Not Found) 【发布时间】:2021-09-15 01:00:05 【问题描述】:

所以我一直试图用这个函数从我的表中删除一个人:

  const deletePerson = async (id) => 
    await fetch(`http://localhost:3000/people/$id`, 
      method: "DELETE",
      headers: 
        "Content-type": "application/json"
      
    )

    await setPeople(people.filter(person => person.id !== id))
  

这是桌子:

<table>
    <thead>
       <tr>
         <th>#</th>
         <th>Name</th>
         <th>Age</th>
         <th></th>
       </tr>
   </thead>
    <tbody>
       people.map((person) => (
          <tr key=person.id + 1>
            <td>person.id</td>
            <td>person.name</td>
            <td>person.age</td>
            <td>
              <button onClick=deletePerson id="remove-button">REMOVE</button>
            </td>
         </tr>
       ))
    </tbody>
</table>

这是json文件(我使用mock db,JSON服务器):


  "people": [
    
      "name": "John Doe",
      "age": "69",
      "id": 1
    ,
    
      "name": "Jane Doe",
      "age": "64",
      "id": 2
    
  ]

当我单击删除按钮时,删除功能无法识别 id(我猜)并且出现此错误。我一直在尝试自己解决它,但我无法成功。我是 ajax 和 http 请求的新手,所以我愿意接受建议和信息。

【问题讨论】:

Onclick 处理程序传递一个事件,而不是个人或个人 ID。 【参考方案1】:

您正在传递整个 person 对象,而您只需要 ID。要么只传递 ID,要么修改您的 deletePerson 以处理 person 对象:

  const deletePerson = async (person) => 
    await fetch(`http://localhost:3000/people/$person.id`, 
      method: "DELETE",
      headers: 
        "Content-type": "application/json"
      
    )
    await setPeople(people.filter(_person => _person.id !== person.id))
  

【讨论】:

现在我收到localhost:3000/people/undefined 错误而不是 [object%20Object] 他们没有传递任何东西,处理程序被事件调用。 ...并且 Event 对象没有 id 属性。你可能想要&lt;button onClick=_ =&gt; deletePerson(person) ... 哦,是的,它已修复...我更改了它onClick=() =&gt; deletePerson(person.id) 谢谢...

以上是关于删除 http://localhost:3000/people/[object%20Object] 404(未找到)的主要内容,如果未能解决你的问题,请参考以下文章

无法访问 http://localhost:3000

GET http://localhost:3000/:/localhost:4000 404(未找到)

CORS 策略已阻止从源“http://localhost:3000”访问“http://localhost:8080/demo/getAll”获取

CORS 策略已阻止从源“http://localhost:3000”访问“http://localhost:8000/api/puppies”获取

CORS 策略已阻止访问从源“http://localhost:3000”获取

从源“http://localhost:3000”访问“http://localhost:5000/api/products”的 XMLHttpRequest 已被 CORS 策略阻止:无“访问控制”