我想通过使用ajax函数将表单详细信息发送到node.js服务器我能在控制台中看到我发送的内容
但是我无法从node.js服务器获得任何响应到html ajax函数
server.js
var http = require('http');
http.createServer(function(request, response) {
request.on('data', function (chunk) {
var res=chunk.toString('utf8');
var obj=JSON.parse(res);
var region=obj.region;
var os=obj.os;
console.log(region);
console.log(os);
});
//var data="hi";
//how to send data
//response.send(data);
}).listen(8088);
client.html
<html>
<head>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script>
function myFunction() {
var region = document.getElementById("region").value;
var os = document.getElementById("os").value;
var data = {};
data.region = region;
data.os = os;
$.ajax({
type: 'POST',
jsonpCallback: "callback",
datatype: 'jsonp',
data: JSON.stringify(data),
//contentType: 'application/json',
url: 'http://127.0.0.1:8088/', //node.js server is running
success: function(data) {
alert("success");
console.log(JSON.stringify(data));
},
error: function (xhr, status, error){
console.log('Failure');
alert("failure");
},
});
}
</script>
</head>
<body>
<form>
<input type="text" id="region" name="region"/>
<input type="text" id="os" name="os"/>
<input type="button" value="search" class="fil_search" onclick="myFunction()"/>
</form>
</body>
</html>
帮我解决一下如何从node.js服务器获取响应。我希望在html页面中看到成功消息的警告框
答案 0 :(得分:1)
您应该添加request.on(&#39; end&#39;)事件,该事件将在收到所有数据并完成http请求时触发:
数据:每当正文数据进入TCP套接字级别时都会触发。请注意,这不一定包含所有数据,因此它被称为块。
结束:HTTP请求完成时触发。这表示已读取与其关联的所有正文数据,并且已触发相应的数据事件。
var http = require('http');
http.createServer(function(request, response) {
request.on('data', function (chunk) {
console.log("Received body data", chunk.toString());
// chunk is received, process it as you need
});
request.on('end', function() {
// http request is competed, send response to client
response.writeHead(200, "OK", {'Content-Type': 'text/html'});
response.end();
})
}).listen(8088);
答案 1 :(得分:1)
发生这种情况的原因是您从 127.0.0.1:8088
协议加载file://
。这是浏览器的一种不安全的可疑操作,它不允许它为了保护您。
您现在有两个选择:
client2.html
from Node.js - 您应该使用网址路径{{1}来代替file://
,而不是来自任何其他网络服务器的节点js client2.html
}。我提供的链接包含您问题的解决方案,即CORS error。没有正确配置Node.js脚本就没有解决方案。