gpt4 book ai didi

node.js - 如何检索我在服务器端 (node.js) 的 jQuery.ajax( )'s ` data` 属性中传递的对象?

转载 作者:搜寻专家 更新时间:2023-11-01 00:12:08 24 4
gpt4 key购买 nike

我制作了一个调用 jQuery 的 ajax 方法的 chrome 扩展:

content-script.js

[...]
$.ajax({
"url": "http://localhost:5000/",
"type": "PUT",
"contentType": "application/json",
"data": { "name": "random object" },
"dataType": "json"
});
[...]

在服务器端,我试图获取在 data 属性中传递的信息:

web.js

[...]
app.put('/', function(request, response) {
console.log(request.data);
});
[...]

但我得到的是 undefined。如何在服务器端检索 data 属性中传递的对象 ( Node.js + express.js )?

我还尝试了 console.log(request) 并在其中得到了很多东西,但没有任何东西看起来像我在 data 属性中传递的信息。 ..

编辑

我最近的尝试(基于 graydsl 的回答)对上面的代码进行了以下更改:

  • app.put... 之前添加了 app.use(express.bodyParser());
  • put 更改为 post everywhere
  • request.data 更改为 request.body.data

现在,当响应这样的表单时,代码将执行我想要的操作:

<form method="post" action="/">
<input name="data" type="text" value="WOO HA" />
<input type="submit" name="submit" value="submit" />
</form>

但是,如果我恢复使用 post 而不是 put(并且浏览器最终位于 http://localhost:5000/?data =WOO+HA&submit=submit 出于某种原因)

当使用 ajax 进行 putting(或 posting)时也会失败(请参阅上面的代码)。当我尝试使用 ajax 时,我在服务器上得到了这个:

SyntaxError: Unexpected token ILLEGAL
at Object.parse (native)
at IncomingMessage.<anonymous> (/home/shawn/.node_libraries/.npm/connect/1.8.7/package/lib/middleware/bodyParser.js:135:16)
at IncomingMessage.emit (events.js:61:17)
at HTTPParser.onMessageComplete (http.js:133:23)
at Socket.ondata (http.js:1019:22)
at Socket._onReadable (net.js:683:27)
at IOWatcher.onReadable [as callback] (net.js:177:10)

最佳答案

  1. 正如其他人提到的,您现在正在做的,您需要使用 bodyParser` 中间件。

  2. 如果请求主体的内容类型为“application/json”,bodyParser 会将其解析为一个对象,该对象位于request.body。因此,在您的情况下,request.body.name 应该是“随机对象”。

我认为您(以及之前的几个响应者)在精神上挂断了 jQuery 的 ajax 方法使用键名“data”作为要发送的对象(序列化为 JSON)这一事实在请求正文中,神奇地滑到假设服务器端处理请求的任何东西也将通过名称“数据”调用该对象。两者之间没有任何联系。

关于node.js - 如何检索我在服务器端 (node.js) 的 jQuery.ajax( )'s ` data` 属性中传递的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10574374/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com