我在编写express.js服务器时遇到问题, 我尝试“发布”并“获取”一些数据,我通过ajax成功“获取”数据, 但是当我“发布”数据而不是运行.success(function(){...})时, 它运行.error(function(){})。 我一直想弄清楚,匹配代码,但无法得到正确的选择, 请帮忙 ! 这是我在express.js上的app.js代码
var express = require('express');
var routes = require('./routes');
var user = require('./routes/user');
var http = require('http');
var path = require('path');
var mydata = require('./routes/mydata');
var app = express();
{...}// some more default code
app.get('/', routes.index);
app.get('/users', user.list);
app.get('/show',mydata.showData);
app.get('/data',mydata.getData);
app.get('/moredata',mydata.getMoreData);
app.get('/moredata1', mydata.getMoreData1);
http.createServer(app).listen(app.get('port'), function(){
console.log('Express server listening on port ' + app.get('port'));
});
这是我的mydata.js代码
exports.showData = function (req,res){
res.render('mydata')
}
exports.getData = function (req,res){
console.log('Hello from getData');
res.send('Hello from Server');
}
exports.getMoreData = function (req,res){
console.log("Hello from getMoreData");
res.send({name:"Muhammad",age:23});
}
exports.getMoreData1 = function (req,res){
console.log("Hello from getMoreData1");
console.log(req.body.name);
console.log(req.body.age);
res.send({name:"Faizan",age:55});
}
在客户端上我写了这个代码文件名:“mydataclient.js”
$(function(){
//alert("Its working");
$("#btn").on("click", function (){
//alert("Hello World");
$.ajax({
url:"/data",
type:"get"
})
.success(function(response){
console.log('success');
alert(response);
$("#data").html(response);
})
.error(function() {
console.log("error from #btn");
})
})
$("#btnMore").on("click", function() {
//alert("Hello World");
$.ajax({
url:"/moredata",
type:"get"
})
.success(function(response){
console.log('success');
alert(response);
$("#data").html(response.name);
})
.error(function() {
console.log("error");
})
})
$("#btnPost").on("click", function() {
var abc = $('#myname').val();
//alert(abc);
$.ajax({
url:"/moredata1",
type:"post",
data: {name: abc, age:11}
})
.success(function(response){
$("#data").html(response.name);
})
.error(function(){
console.log("Error from btnPost");
})
})
});
此页面上的所有内容都运行良好,除非我尝试将数据发布到服务器,否则会在服务器控制台上显示此错误。
POST / moredata1 404 5ms
这是我的页面.ejs文件代码:
<!DOCTYPE html>
<html>
<head>
<title>My Data Page</title>
<link rel='stylesheet' href='/stylesheets/style.css' />
<script src ="/javascripts/jquery-2.0.3.min.js" type="text/javascript"></script>
<script src ="/javascripts/mydataclient.js" type="text/javascript"></script>
</head>
<body>
<h1>MyData</h1>
<input type="text" id="myname">
<p>Welcom </p>
<div id="data">Hello</div>
<button id="btn">Get Data</button>
<button id="btnMore">Get More Data</button>
<button id="btnPost">Post Data</button>
</body>
</html>
您还可以告诉我将数据发布到服务器的其他方式。
代码位于https://www.dropbox.com/sh/0jzgt27897zxl1v/7VAraRWnMl 请帮助!
由于
答案 0 :(得分:2)
在Express.js中,您需要明确允许POST
s到网址:
app.get('/moredata1', mydata.getMoreData1);
app.post('/moredata1', mydata.getMoreData1); // <===
否则,服务器将只返回404
。
或者,如果您确实愿意,可以使用app.all
,这允许GET
,POST
和PUT
HTTP请求。
答案 1 :(得分:1)
app.get('/ moredata1',mydata.getMoreData1);
修改:app.post('/ moredata1',mydata.getMoreData1);