【发布时间】:2018-07-20 16:05:25
【问题描述】:
所以我调用这个函数来发送关于 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”标头 资源。因此,不允许访问 Origin 'null'。"
我正在使用库 Express.js 和 body-parser。我是服务器的初学者,任何帮助将不胜感激。
【问题讨论】:
-
你也不应该在
res.send()之后调用res.end(),因为后者在后台调用了前者,你会因为调用它两次而出错。
标签: javascript jquery node.js ajax server