我有一個真正的困難時刻站起來從html頁面到我的node.js應用程序的雙向數據傳輸,然後返回到html頁面。來自express js的Ajax post響應一直拋出錯誤
我很確定我全部都是正確的解決方案,但我只是沒有得到它的工作。
我用我的Node.js應用程式如下:
var express = require('/usr/lib/node_modules/express');
var app = express();
app.use(function(err, req, res, next){
console.error(err.stack);
res.send(500, 'Something broke!');
});
app.use(express.bodyParser());
app.post('/namegame', function(req, res)
{
console.log('Got request name: ' + req.body.name);
setTimeout(function()
{
var newName = "New Name-O";
res.send({name: newName});
}, 2000);
}
);
app.listen(8088, function() { console.log("Server is up and running"); });
以下是我的html頁面:
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7/jquery.js"></script>
<script type="text/javascript">
// wait for the DOM to be loaded
$(document).ready(function()
{
alert("Got here!");
function DisplayName(response)
{
alert(response.newName);
}
$("#NameGameIt").click(function(event)
{
alert("How about now?");
//event.PreventDefault();
var nameSubmitted = document.getElementById("name");
//var nameSubmitted = "help!!";
alert("Name: " + nameSubmitted.value);
$.ajax({
type: "POST",
url: "http://127.0.0.1:8088/namegame",
data: {name: nameSubmitted.value},
dataType: "json",
timeout: 2500,
success: function() { alert("???");},
error: function(error1, error2, error3)
{ alert("error"); },
complete: function(arg1, arg2, arg3)
{ alert("complete"); }
});
});
});
</script>
</head>
<body>
<h1>Test form for Ajax</h1>
</br>
Name: <input type="text" id="name" name="name"></br>
<input type="button" value="NameGameIt" id="NameGameIt">
</form>
</body>
</html>
所以,當我運行的節點應用程序,服務器自帶很好。當我啓動html頁面時,我收到警報「到了這裏!」當我按下「NameGameIt」按鈕時,我收到警報「現在怎麼樣?」然後是提示「名稱:」+我輸入的任何名稱。一旦我點擊該警報,節點應用程序立即看到帖子並將名稱打印到控制檯。兩秒鐘後,當節點發送響應時,瀏覽器將直接進入ajax文章的錯誤處理程序。在錯誤處理程序中出現的唯一有用的數據是它是一個「錯誤」,它並不真正有用。
所以我知道消息從html頁面進入節點,因爲它打印出我發送的名稱,並且我知道html頁面從節點獲取消息,因爲它不會錯誤地出現,直到節點上的超時發生觸發發送。但是,我不知道爲什麼它一直把我送到錯誤處理程序而不是成功。我已經使用node-inspector在節點代碼中一路走過了,它似乎正在用200代碼正確地構建數據包,並且在完成數據包之後調用.end inside .send,因此我不會想想那些事情都在咬我。
我快要瘋了!如果有人看到我錯過了什麼,或者有什麼新的想法來收集更多信息,我將非常感謝幫助。
你可以訪問瀏覽器控制檯由於拒絕同源策略? –
@Kevin B瀏覽器控制檯根本沒有顯示任何類型的消息,只是關於我的HTML文檔字符編碼的警告消息沒有聲明。 。 。我認爲我很安全忽略 – Brian