2017-04-22 160 views
0

同時提交表單,而無需使用AJAX我可以看到我的http://localhost/ss(工作正常,因爲它應該)expressjs沒有返回任何respose到html

「消息發送成功」,但在使用AJAX提交表單$ .post()響應未收到$ .post()方法。我找不到任何理由..

請注意:相同的代碼工作正常使用PHP

的index.html

<!DOCTYPE html> 
<html> 

<head> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.0/jquery.min.js"></script> 
    <script> 
    $(document).ready(function() { 
     $("#buttons").click(function() { 
     $.post("http://localhost:3000/ss", { 
      sendemail: $("#email").val(), 
      sendname: $("#UserName").val(), 
      sendpass: $("#Password").val() 
     }, function(res) { 
      alert(res); 
     }); 
     }); 
    }); 
    </script> 

    <body> 

    <div class="forms"> 
     <form> 
     <div class="formdiv"> 
      <label>User Email</label> 
      <input type="email" id="email" name="email" /> 
     </div> 
     <div class="formdiv"> 
      <label>User Name</label> 
      <input type="text" name="UserName" id="UserName" /> 
     </div> 
     <div class="formdiv"> 
      <label>User Password</label> 
      <input type="password" name="Password" id="Password" /> 
     </div> 
     </form> 
     <div style="background:green;padding:15px;" id="buttons">send</div> 
    </div> 
    </body> 

</html> 

parse.js

var express = require("express"); 
var bodyParser = require("body-parser"); 
var app = express(); 

app.listen(3000, function(req, res) 
{ 
    console.log("express is listening to port 3000"); 
}); 

app.use(bodyParser.urlencoded({ 
    extended: true 
})) 

app.use(bodyParser.json()); 

app.get("/", function(req, res) 
{ 
    res.send("hai"); 
}); 

app.post("/ss", function(req, res) 
{ 
    var ss = req.body.sendemail; 
    if (ss != undefined) 
    { 
    console.log(ss); 
    res.send("message sent successfully"); 
    } 
    else 
    { 
    res.send("error occurred"); 
    } 
}); 

控制檯打印用戶的電子郵件地址「唯一的問題是對html的響應」Th ank爲你的時間

+0

如果我理解正確的警報(RES)上的客戶端返回undefined?或者從不執行? – itsundefined

+1

即使你用alert(「hai」)替換alert(res);它不工作..我的意思是「永遠不會執行」@slowdeath –

+0

你可以嘗試用res.end(「a message」)替換res.send嗎? – itsundefined

回答

1

代碼看起來自己,雖然有一個問題,(我懷疑)你使用它的方式。你不允許cross-origin sharing。換句話說,如果您嘗試在另一個域上運行此代碼,您將收到CORS錯誤,因爲服務器拒絕響應客戶端。

因此,我懷疑你加載HTML文件之一:

  • 爲本地HTML文件。
  • 從上面提到的錯誤返回不同的域

那些兩者將(並)上運行它。這就是爲什麼你沒有收到迴應,所以你沒有看到警報信息。

爲了繞過這個問題,您可以:

  • 啓用CORS支持
  • 通過服務器渲染HTML文件(因此請求將來自同一個域是未來)。

這裏舉例:

var express = require("express"); 
var bodyParser = require("body-parser"); 
var app = express(); 
var path = require("path"); 

... 

app.get("/", function(req, res) 
{ 
    res.sendFile(path.join(__dirname + '/index.html')); 
}); 

app.post("/signup", function(req, res) 
{ 
    var email = req.body.email; 

    if (!email) 
    { 
    return res.json({ 
     message: "error occurred" 
    }); 
    } 

    res.json({ 
    success: true; 
    }); 
});