【问题标题】:Jquery AJAX always errorsJquery AJAX 总是出错
【发布时间】:2014-07-09 21:09:20
【问题描述】:

我正在使用 nginx 网络服务器并在 localhost 上运行一个网站。我希望能够使用 jquery 的 AJAX 函数通过服务器获取我的文件,但它总是会引发错误。我在我的“数据”文件夹中创建了一个名为 TESTFOLDER 的文件夹,它有一个名为 test.txt 的 txt 文件。

这是我的 JavaScript 代码

$.ajax({
  url: "../data/TESTFOLDER/",
  type: 'GET',
  dataType: "txt",
  headers: { 
    Accept : "text/html",
    "Content-Type": "text/html"
   },
  success: function(data){
    console.log('there was a success');
  },
  error: function (jqXHR, textStatus, errorThrown) {
        console.log('there was an error');
  }
});

这是我的文件夹的 nginx 配置块

    location /data/TESTFOLDER/ {
        autoindex on;
        try_files $uri $uri;
        add_header Content-Type application/txt;
    }

我总是收到这个错误:

NetworkError: 500 Internal Server Error

当它试图到达数据/TESTFOLDER时

我当然试过比这更简单,没有标题和所有这些。但似乎没有任何效果。如果可以的话,请帮忙。

编辑:

  • 是的,我可以通过在浏览器中输入 local host/data/TESTFOLDER/test.txt 来访问该文件。
  • ../ 似乎没有引起问题,因为在这两种情况下,我都会收到错误消息 500 Internal Server Error - local host/data/TESTFOLDER/,即不是本地主机/../data/TESTFOLDER/
  • 服务器错误日志显示:2020#2644:重写或内部重定向周期,同时内部重定向到“/data/TESTFOLDER/”,客户端:127.0.0.1,服务器:localhost,请求:“GET /data/TESTFOLDER/ HTTP /1.1”,主机:“localhost”,引用者:“http://localhost/index.html”

注意:本地主机一词在这里是两个单独的词,因为它们不允许我发布链接。

EDIT2:我应该注意,虽然本地主机/数据/TESTFOLDER/test.txt 在我的浏览器中工作正常,但本地主机/数据/TESTFOLDER/ 会抛出错误 500。这应该发生吗?

【问题讨论】:

  • 查看服务器日志,为什么会出现 500 错误。
  • 是的,错误 500 表示您的服务器代码出现未捕获的异常,这意味着它与 javascript 无关。
  • jqXHR、textStatus 或 errorThrown 是否提供了更多详细信息?
  • 您应该尝试在没有 Ajax 调用的情况下获取文件。 AKA 直接在浏览器中输入路径。
  • 你能用你的浏览器访问那个路径吗?为什么你对 jQuery 的 url 和 nginx 位置块使用不同的路径?两者都应该以 /data 开头

标签: javascript jquery ajax nginx


【解决方案1】:

您的网址格式错误。如果您想在 Ajax 调用中使用相对路径,则不需要使用 ..

来源:Relative URLs in AJAX requests

您可以使用url: "/data/TESTFOLDER/"。您当前的 url 尝试访问可能不存在的 http://localhost:63542/../Data/TESTFOLDER/,但服务器尝试定位它并抛出错误。

【讨论】:

    【解决方案2】:

    您可以使用 ajax 捕获不同的 http-statuscode。

    例子:

    $.ajax({
      statusCode: {
        500: function() {
          // do something
        }
      }
    });
    

    【讨论】:

      【解决方案3】:

      您滥用try_files 并获得内部重定向循环。

      另外,文本的 MIME 类型是 text/plain

      【讨论】:

      • 是的,你是对的,我已修复它,现在我不再收到 500 服务器错误。看来他到本地主机/数据/TESTFOLDER/ 就好了,但ajax 仍然错误?
      猜你喜欢
      • 2018-08-06
      • 2011-09-25
      • 2015-05-25
      • 1970-01-01
      • 2014-01-27
      • 1970-01-01
      • 2012-06-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多