我是node.js / express的新手,我有一个问题。我找了好几个小时。
我正试图为我的基本博客制作一个管理面板,我需要发布:
title
& content
从HTML到my panel.js
以下是我尝试过的:
从HTML页面发布数据,它的工作原理是:
$(document).ready(function() {
$('#but').click(function(e) {
e.preventDefault();
var title = document.getElementById('title');
$.ajax({
type: "POST",
url: "/panel/save",
data: title.value,
dataType: "json"
});
});
});
和panel.js
var express = require('express');
var router = express.Router();
var app = express();
router.get('/', function(req, res) {
res.render('panel_html');
});
/* mysql things */
router.get('/save/', function(req, res) {
var t = req.params.title;
console.log("title :"+t);
});
module.exports = router;
错误报告:
14 Aug 20:49:33 - [nodemon] restarting due to changes...
14 Aug 20:49:33 - [nodemon] starting `node app.js`
GET /panel/ 304 11ms
GET /lib/semantic/build/packaged/javascript/semantic.js 304 4ms
GET /lib/semantic/build/packaged/css/semantic.css 304 5ms
GET /stylesheets/style.css 304 7ms
GET /lib/semantic/build/packaged/fonts/icons.svg 304 1ms
GET /lib/semantic/build/packaged/fonts/icons.woff 304 0ms
Error: Failed to lookup view "error" in views directory "...site/views"
at Function.app.render (...site/node_modules/express/lib/application.js:492:17)
at ServerResponse.res.render (...site/node_modules/express/lib/response.js:802:7)
at Layer.module.exports [as handle] (...site/app.js:74:9)
at trim_prefix (...site/node_modules/express/lib/router/index.js:235:17)
at ...site/node_modules/express/lib/router/index.js:208:9
at Function.proto.process_params (...site/node_modules/express/lib/router/index.js:269:12)
at IncomingMessage.next (...site/node_modules/express/lib/router/index.js:199:19)
at fn (...site/node_modules/express/lib/response.js:797:25)
at Function.app.render (...site/node_modules/express/lib/application.js:494:14)
at ServerResponse.res.render (...site/node_modules/express/lib/response.js:802:7)
POST /panel/save 500 11ms - 1.13kb
谷歌Chrome控制台:
POST http://127.0.0.1:3000/panel/save 500 (Internal Server Error)
发布于 2014-08-14 09:20:05
首先,当您将title
变量传递到ajax调用中时,请确保将它放在一个对象文本中,从而为它命名:
$.ajax({
type: "POST",
url: "/panel/save",
data: { title: title.value },
dataType: "json"
});
接下来,将您的router.get
更改为router.post
,以便它可以接受路由。接下来,您应该通过req.body
访问您的后期数据。只需确保在此路由声明之前,您正在应用程序中的某个地方use
ing express的body-parser
。
router.post('/save/', function(req, res) {
var t = req.body.title;
console.log("title :"+t);
});
https://stackoverflow.com/questions/25313596
复制相似问题