我目前正在服务器端创建一个运行NodeJS的应用程序,并在客户端创建一个运行ReactJS的应用程序(与jQuery结合使用)。
loadQuestionsFromServer: function() {
if(this.state.request) this.state.request.abort();
this.state.request = $.ajax({
url: '/api/questions/',
dataType: 'json',
cache: false,
success: function(obj) {
this.setState({ questions: obj });
}.bind(this),
error: function(xhr, status, err) {
console.error('/api/questions', status, err.toString());
}.bind(this)
});
}
上面显示了我的ajax调用示例。它确实执行成功,但我的控制台仍然记录net::ERR_CONNECTION_REFUSED
错误,我似乎无法调试:
ajax调用读取文件并返回此文件的内容:
var QUESTION_FILE = path.join(__dirname, '../public/questions.json');
router.get('/questions', function(req, res) {
res.setHeader('Access-Control-Allow-Origin', '*');
res.setHeader('Cache-Control', 'no-cache');
fs.readFile(QUESTION_FILE, function(err, data) {
if (err) {
console.error(err);
process.exit(1);
}
res.json(JSON.parse(data));
});
});
我在互联网上找到了几个“解决方案”:
setHeaders Access-Control-Allow-Origin
(如代码所示)crossDomain: true
添加到ajax调用但它们似乎都不起作用。 页面加载时第一次ajax调用时不会发生错误,但是在进程后期(POST和GET)触发ajax调用时会发生错误。 编辑:也不是每次触发ajax调用时都会发生错误。似乎只有当我在彼此之后快速触发时才会发生这种情况。