Node JS Get Ajax请求有效,但是post ajax请求不起作用.Even Post数据定义url没有响应

时间:2013-12-13 07:36:41

标签: node.js jquery express

我在编写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 请帮助!

由于

2 个答案:

答案 0 :(得分:2)

在Express.js中,您需要明确允许POST s到网址:

app.get('/moredata1', mydata.getMoreData1);
app.post('/moredata1', mydata.getMoreData1); // <===

否则,服务器将只返回404

或者,如果您确实愿意,可以使用app.all,这允许GETPOSTPUT HTTP请求。

答案 1 :(得分:1)

app.get('/ moredata1',mydata.getMoreData1);

修改:app.post('/ moredata1',mydata.getMoreData1);