【问题标题】:AJAX Error: Connection refused?AJAX 错误:连接被拒绝?
【发布时间】:2015-07-29 05:33:59
【问题描述】:

我在 MEN 堆栈(MongoDB、Express 和 Node)上运行 Digital Ocean 服务器,并带有注册表: http://45.55.177.167:3000/register

如果您尝试从下拉列表中选择一个选项,我会收到以下错误: GET 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);

控制器:

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 的 iptables 上打开 3000 端口。
  • 我刚刚检查了您列出的 ip(请注意,仅供参考)并收到连接被拒绝错误。几乎可以肯定,Droplet 的 iptables 中不允许使用端口或主机。这不是您的代码的问题。如果您需要入门帮助,也许可以看看这个(许多优秀的 DO 演练之一)digitalocean.com/community/tutorials/…
  • (!guy) 不客气。
  • 如果你告诉我你的水滴是什么味道*nix,我可以发布这些步骤作为答案。
  • 我已经为我们创建了一个聊天室来完成这个。

标签: jquery ajax node.js express


【解决方案1】:

检查你的ip后,我确定你的问题是数据。您收到错误“拒绝连接”,因为该应用程序没有对其正在运行的预期对象参数进行任何健全性测试。如果没有数据,尝试访问未定义的属性会引发错误,导致您的应用在没有数据的情况下中断并返回您在客户端看到的错误。

我们没有更改您的任何代码来解决此问题。您的项目可以视为已完成。

将数据从本地 mongo db 集合迁移到远程主机解决了该问题。正如我所演示的,有一个简单的修复方法可以快速迁移简单的数据结构:在命令行上连接到 mongo,选择您的数据库,然后 find() 您的每个集合。正如您所注意到的,它们只是 JSON 对象,只需极少修改即可复制粘贴到新远程目标的 insert() 语句。

对于数据多于少数集合中的简单结构化、有限数据的情况,这不是一个可取的解决方案;您会想要使用编程解决方案,例如将数据库转储到比我们在这里使用的更大的任何东西。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-18
    • 2016-12-09
    • 2018-04-21
    • 2016-04-25
    • 1970-01-01
    相关资源
    最近更新 更多