我正在 MEN 堆栈(MongoDB、Express 和 Node)上运行 Digital Ocean 服务器,并带有注册表单: http://45.55.177.167:3000/register
如果您尝试从下拉列表中选择一个选项,我会收到以下错误:
获取http://45.55.177.167:3000/price?name=pro&cycle=monthly net::ERR_CONNECTION_REFUSED
我想知道这是为什么?我希望错误消失并得到响应,以便价格相应变化。
我的AJAX方法:
$.get('/price', parameters, function(data) {
callback(data.price);
});
路线:
app.route('/price').get(plans.getPrice);
Controller :
var param_name = req.query.name;
var param_cycle = req.query.cycle;
var query = param_name + "_" + param_cycle;
Plan.findByName(query, function(err, selected_plan) {
var formatted_price = format_price(selected_plan.price) + '.00';
res.send({price: formatted_price});
});
这在我的本地主机上工作正常,但是当我将其部署到 Droplet 时,我收到错误。如果需要澄清,请告诉我。
最佳答案
检查你的ip后,我确定你的问题是数据。您收到错误“拒绝连接”,因为应用程序没有对其运行的预期对象参数进行任何健全性测试。如果没有数据,尝试访问未定义的属性会引发错误,导致您的应用程序在没有数据的情况下中断并返回您在客户端中看到的错误。
我们没有更改您的任何代码来解决此问题。您的项目可以认为已完成。
将数据从本地 mongo 数据库集合迁移到远程主机解决了该问题。正如我所演示的,有一个简单的修复方法可以快速迁移简单的数据结构:在命令行上连接到 mongo,选择数据库,然后 find()
每个集合。正如您所注意到的,它们只是 JSON 对象,可以通过最少的修改将其复制粘贴到新远程目标的 insert()
语句。
对于数据多于少数集合中的简单结构化、有限数据的情况,这不是一个明智的解决方案;您需要使用编程解决方案,例如转储数据库以获取比我们在这里使用的更大的内容。
关于jquery - AJAX错误: Connection refused?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30290908/