【发布时间】:2016-06-24 09:25:29
【问题描述】:
我的问题:一旦我将带有 JQuery 的 JSON 对象提交到使用 JSON 解析器(属于模块 body-parser)的 express 应用程序并尝试回复它,无论是 res.send 还是 res.render,它什么也没做。我尝试将 html 作为 html 响应直接输出回客户端。 另一方面,在我网站的同一页面上,我尝试了常规的正文解析器,并且响应正常。 这是我的 JSON 监听器:
controller.js:
var express = require('express');
var app = express();
var bodyParser = require('body-parser');
var jsonParser = bodyParser.json();
var urlencodedParser = bodyParser.urlencoded({ extended:
false });
app.post('/video', jsonParser, function(req, res) {
res.send("hi"); //nothing happens
console.log(req.body.time); //works, i get the data
console.log(req.body.src); //works, i get the data
});
提交给它的表单:
index.html
...mywebsite code, uses jquery
fu();
function fu(){
var vid = document.getElementById("vid");
var time = vid.currentTime;
var src = vid.currentSrc;
$.ajax({
type: "POST",
url: "/video",
data: JSON.stringify({time: time, src: src }), //the data is parsed fine
dataType: 'json',
contentType: 'application/json'
});
//alert("current time: " + time);
};
现在,我尝试了一个带有正文解析器的简单表单,它在完全相同的网站上运行良好(我把它放在那里只是为了看看它是否可以工作):
controller.js
var express = require('express');
var app = express();
var bodyParser = require('body-parser');
var jsonParser = bodyParser.json();
var urlencodedParser = bodyParser.urlencoded({ extended:
false });
app.post('/person', urlencodedParser, function(req, res){
res.send('Thanks!');
console.log(req.body.firstname);
console.log(req.body.lastname);
});
人形:
<form method="POST" action="/person">
Firstname: <input type ="text" id="firstname"
name="firstname"><br>
Lastname: <input type ="text" id="lastname"
name="lastname">
<input type="submit" value="sumbit">
</form>
【问题讨论】:
-
您不必
stringify发送到服务器的数据。试试:data: {time: time, src: src }。 -
没有stringify是不行的,我刚试过...
-
我确实工作得很好。至少如果你像我一样安排你的服务器:gist.github.com/Nonemoticoner/366c02f7db613566d3cf
-
您写了
dataType: 'json',但您发送了纯文本作为回复。此外,我相信捕捉对任何变量的响应都会很有用。目前,您的 AJAX 请求对它没有任何作用。 -
好的,我尝试了没有 stringify 的示例,它可以工作。我可以在控制台上看到数据。但是,仍然没有任何回应。 “嗨”不会出现。
标签: javascript jquery json node.js parsing