对NodeJS服务器的超级慢发帖请求

时间:2014-08-07 17:55:37

标签: javascript ajax node.js mongodb http-post

我正在尝试使用PostMan和终端向我的NodeJs服务器发送Post请求,但似乎请求永远不会结束。

我有一个网站和一个表单,我尝试使用Ajax发送表单。我在其他文件中做同样的事情,除了另一个文件不包含表单和帖子工作的事实。

这是我的html表单:

<div class="team"> 
     <img class="teamInfo" src="images/leaderboard.png">  
        <p class= "createT"> Create a Team </p>
        <p class= "chooseC"> Choose a Charity </p>
        <p class= "enter"> Enter Team Member's Email</p>
        <p class= "upload">Upload your Company<br>or Team's Logo</p>

        <!-- added action tag solved the 405 error : "post method not allowed"-->
     <form id="create_team_form"  action="/" method="post">
            <input class="teamName" type="text" id="teamName" name="teamName"  size="25" maxlength="60" value="Team Name">
            <input class="companyName" type="text" id="companyName"  name="companyName"  size="25" maxlength= "60" value="Company Name">
            <input class="teamDescription"  type="text" id="teamDescription"  name="teamDescription"    size="25"    maxlength= "60" value="Team Description">
            <input class= "email" type="text" id="email"  name="email"  size="25"   maxlength= "60" value="emails">   
            <input class="searchCharity"  type="text" id="charityName" name="charityID"  size ="25"      maxlength="60">
            <p class="click"> Click the charity's name to select who your team will run for!</p>
            <input class="greenButton" type="button" onclick="createTeam();" value="Create My Team!">
     </form>   
     <img class="img-box" src="images/imgBox.png" alt=""/>
</div>

这是我的javascript ajax将表单发送到服务器:

function createTeam(){

    var teamN= document.getElementById("teamName").value;
    var companyName =document.getElementById("companyName").value; //maybe not, tae it off.
    var charityName = document.getElementById("charityName").value;

    if((teamN.trim() === "") || (companyName.trim() === "") || (charityName.trim() === ""))
    {
        alert("You did not fill the team Name  or companyName, Please enter with a name");

    }else{
               var sessionID = $.cookie("sessionID")
               $.ajax({
                      type: "POST",
                      url: "http://xxx.xxxx.xxx.x:9000/team/?sessionID="+sessionID,
                      data: $("#create_team_form").serialize(),
                      success: function(msg) {
                          alert("team supposedly saved")
                          $.cookie("teamID",msg.teamID)
                          $.cookie("sessionID",sessionID)
                      //window.location.href='teamCreated.html'
                      }
                });

        }   
}

它进入if,但其他只是缓慢。我不知道数据是否正在发送。到目前为止,我无法在我的mongodb中保存文档。

这是我在服务器中的team.js:

    var express = require('express'); 
    var sha1 = require('sha1'); 
    var router = express.Router(); 
    var sessionOBJ = require('./session');
    var mongoose = require('mongoose');
    var Schema = mongoose.Schema;


    router.all('*', function(req, res, next) {
        res.header("Access-Control-Allow-Origin", "*");
        res.header("Access-Control-Allow-Headers", "X-Requested-With");
        res.header("Access-Control-Allow-Methods", "PUT, GET,POST");
     });

    var teamSchema = new Schema({
        teamID: String,
        teamName: String,
        teamDescription: String,
        teamAdminID: String,
        teamLink: String,
        charityID: String
    });

    var teamModel = mongoose.model('teams',teamSchema);

    router.post('/', function (req, res){

           log.d("Entrou no method post");

           var sessionID = req.query.sessionID 
           var team = req.body;
           var teamName = team.teamName;
           var teamDescription = team.teamDescription;
           var charityID = team.charityID;
           var teamLink = team.teamLink;

          sessionOBJ.isAuthorized(sessionID, function(sessionID){ 

              log.d("Checking session to save team", sessionID);
               var adminID = sessionID.userID; 
               var newTeam = new teamModel({
                    teamName: teamName,
                    teamDescription: teamDescription,
                    teamAdminID: adminID,
                    teamLink: teamLink,
                    charityID: charityID
                  });

               newTeam.save(function(err, team){
               if(err) return console.error(err);
               res.send({"status" : "Created", "teamID" : team._id, "teamAdminID":team.teamAdminID });
                    log.d("Created  Team ID",  team._id)
                    log.d("XXXXXXX XXXXXX XXXXXXX Team Saved inside save method",team);
               });

          });


    })

}

有人能看出我做错了吗?

提前致谢。

1 个答案:

答案 0 :(得分:3)

res.send()致电res.end()后。 response.end告诉服务器整个邮件已发送并可以关闭连接,否则,它会等待更多数据。

源: https://nodejs.org/api/http.html#http_response_end_data_encoding_callback