【问题标题】:Node.js Express AJAX GET returns 404Node.js Express AJAX GET 返回 404
【发布时间】:2013-09-28 15:47:31
【问题描述】:

我有以下几点:

$.get('path/to/file.js', function(data) {
    //this callback function never runs!
});

为什么不调用回调? :S

【问题讨论】:

  • 检查您的控制台,请求是否通过? Node 对此有何评论?
  • yes post console.log(req.url);的输出
  • :S 是什么意思?

标签: jquery node.js express


【解决方案1】:

参数是for a success callback:

jQuery.get( url [, data ] [, success(data, textStatus, jqXHR) ] [, dataType ] )

404 (Not Found) 响应被 jQuery 视为error。通常,只有200 (OK) 或各种3xx 响应被视为“成功”。

在 jQuery 1.5 及更高版本中,从 jQuery 的 Ajax 方法返回的 jqXHR 对象实现了Deferred objects,因此您可以使用.fail() 添加这样的回调。

$.get(...).fail(function (xhr, textStatus, errorThrown) {
    console.log('Ajax error', textStatus, errorThrown);
});

如果您想知道为什么它会得到 404,这取决于使用的实际路径。但是,示例路径将相对于当前页面的地址。

http://yourdomain.tld/foo/bar/page + path/to/file.js =
http://yourdomain.tld/foo/bar/path/to/file.js

您可以尝试通过在主机之后以 / 开头来指定相对于根的路径,这将使用它作为一个共同的起点:

$.get('/path/to/file.js', ...);
http://yourdomain.tld/foo/bar/page + /path/to/file.js =
http://yourdomain.tld/path/to/file.js

【讨论】:

  • 好的。好吧,当我在浏览器中手动访问它时,它给了我 200 OK。出于某种原因,我在使用 AJAX 时得到 404。我正在使用带有 express 框架的 node.js。
  • 实际上,它返回 200 OK 但带有 parseError。所以它认为 JSON 由于某种原因是无效的。但是,我拿了 JSON 去 jsonlint.com 并验证了 json,jsonlint 返回 Valid。
  • @PetterThowsen JSON 是来自静态文件还是路由?如果它来自文件,它是用什么编码保存的? UTF-8 可能是最好的。但是,它有BOM 吗?如果是这样,看看你是否可以在没有它的情况下保存。或者,如果它来自路由,响应是否包含除 JSON 之外的任何其他内容? JSON是如何生成的?是否指定了Content-Type
  • 您是在同一个盒子/域上发出请求吗?否则,您将不得不使用 JSONP,因为您无法使用 jQuery 获得 JS[ON] 跨域。
猜你喜欢
  • 1970-01-01
  • 2018-10-08
  • 2019-12-16
  • 2016-06-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-20
  • 1970-01-01
相关资源
最近更新 更多