
[英]Send socket.io response data to client from node.js server in gzip format
[英]How do I send data as a response from Node.js server to AJAX client?
因此,我正在调用此函数以将有关HTML元素的数据作为对象发送:
function postItem(input) {
$.ajax({
type: "POST",
url: "http://localhost:8080",
data: input,
success: function(message) {
Hconsole.log('got data back');
var m = message;
alert(m);
},
error: function(jqXHR, textstatus, errorThrown) {
alert('text status ' + textstatus + ', err ' + errorThrown);
}
})
}
服务器将比较输入对象和已经存储的对象,并响应它们是否相同:
app.post('/', (req, resp) => {
var eObjClient = req.body;
//somehow get data from database, the following is dummy data
var eObjServer = {
type: 'I',
text: '',
width: '70',
height: '80',
href: '',
color: 'rgb(255, 255, 255)',
class: 'icon-big icon ion-ios-analytics-outline'
};
/*
Object.keys(eObjClient).forEach(function(key){
console.log(key + ": " + eObjClient[key]);
});
*/
if (isSimilar(eObjClient, eObjServer)) {
console.log('step working');
resp.send('step working');
} else {
console.log('broken');
resp.send('broken');
}
resp.end();
});
当前,服务器获取数据并进行正确的计算,但是总是会调用客户端上的错误消息,而我不知道为什么。 此外,如果有帮助,我会在客户端控制台上不断收到此错误:
“无法加载http:// localhost:8080 / :请求的资源上不存在'Access-Control-Allow-Origin'标头。因此,不允许访问源'null'。”
我正在使用Express.js和body-parser库。 我是服务器知识的初学者,任何帮助将不胜感激。
这是因为您的客户端和服务器是跨域的,因此浏览器正在阻止它。
您可以在Node.js中尝试:
app.use(function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
next();
});
但是,必须注意,它将允许任何连接,并且不应在生产中使用。
只需插入CORS中间件,您的客户端AJAX请求就可以正常运行。 您可以通过以下方式使用此库: https : //github.com/expressjs/cors :
var express = require('express')
var cors = require('cors')
var app = express()
app.use(cors())
您应该使用以下方式更改逻辑:
let message = '';
if(isSimilar(eObjClient, eObjServer)) {
console.log('step working');
message = 'step working';
}
else {
console.log('broken');
message = 'broken';
}
resp.status(200).send(message);
对于您的CORS问题,我建议您设置适当的标题或使用cors库 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.