2016-06-15 231 views
0

我有一個nodejs應用程序發送帶有標題的響應application/json。客戶端發出http ajax請求並獲得200 OK狀態。我也能夠查看來自Rest Client的json響應。ajax請求不顯示響應

但是我在用戶界面上看不到任何響應。請讓我知道我出錯的地方。

在我的Firefox的Firebug控制檯:

Connection:keep-alive 
Content-Length:30 
Content-Type:application/json; charset=utf-8 
Date:Wed, 15 Jun 2016 12:13:34 GMT 
ETag:W/"1e-p2J1WXSidVD0/pV2ACqLcQ" 
X-Powered-By:Express 
Request Headers 
view source 

節點js代碼:

var express = require('express'); 
var app = express(); 
app.get('/button', function (req, res) { 
    res.set('Content-Type', 'application/json'); 
    res.send('{"name":"<input type=button>"}'); 
    res.end("response sent"); 
}) 
var server = app.listen(8081, function() { 
    var host = server.address().address 
    var port = server.address().port 
    console.log("Example app listening at http://%s:%s", host, port) 
}) 

在客戶端:

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <title>Login Form</title> 
    <script type="text/javascript" src="js/loginDemo.js"></script> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.2/jquery.min.js"></script> 
</head> 
<body onload="loadPage()"> 
    <div id="loginForm"> 
    </div> 
    </body> 
</html> 

在劇本方面:

$.get("http://172.28.88.28:8081/button", 
function(data, status){ 
    alert("Data: " + data + "\nStatus: " + status); 
}, function(err){ 
    alert('error > '+err); 
}); 
+0

添加客戶端上的錯誤處理程序並查看它是否被觸發 – epascarello

+0

添加了錯誤處理程序,甚至沒有進入錯誤塊。 – zilcuanu

+0

那麼如何在客戶端觸發Ajax調用? – epascarello

回答

0

同源策略 - 我相信是你的問題...我在你的代碼中看到你正在使用端口8081是你的請求來自同一個域,同一個協議和同一個端口(8081)? ... https://en.wikipedia.org/wiki/Same-origin_policy 如果不添加代碼以顯示在您的Ajax請求的錯誤...你不會看到 在網絡選項卡這個錯誤... 試試這個在您的代碼:

// Website you wish to allow to connect 
res.setHeader('Access-Control-Allow-Origin', 'http://yourClientAddress:8081'); 

// Request methods you wish to allow 
res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE'); 

// Request headers you wish to allow 
res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,content-type'); 

// Set to true if you need the website to include cookies in the requests sent 
// to the API (e.g. in case you use sessions) 
res.setHeader('Access-Control-Allow-Credentials', true);