在 JQuery 中获取文本文件内容时出现解析错误

Getting parse error while fetching text file content in JQuery

我正在尝试从驻留在服务器上的文本文件中获取数据。当我在浏览器选项卡中放置 URL 时,我可以访问该位置并能够看到内容。 我正在尝试进行 AJAX 调用并获取文件内容,但出现错误:Uncaught SyntaxError: Unexpected identifier

代码

    function logResults(json){
  console.log(json);
}

$.ajax({
  url: u,
  dataType: "jsonp",
  jsonpCallback: "logResults"
});

在控制台上,

我也尝试了下面的代码,但结果相同,

     $.ajax({
   type: 'GET',
   url: u,
   crossDomain: true,
   dataType: 'jsonp',
   async: false,
   headers: {
     "Access-Control-Allow-Origin": "*"
     },
   success: function(succ) {
     console.log("Success: ", succ)
   },
   error: function(err) {
     console.log("Error: ", err)
   }
 });

此代码总是进入错误块。

这是因为您添加了 dataType as jsonp,所以它会尝试解析对 JSON 的响应,如果响应不是 JSON 它会抛出错误。

你说:

dataType: "jsonp",

但是 URL 正在响应:

Deployment automatically finished…

这是不是JSONP,是纯文本。

当它尝试将纯文本作为 JSONP 执行时出现错误。

不要在dataType字段输入错误信息


async: false,

已弃用。不要使用它。这也毫无意义,因为您正在使用回调。

它也与 JSONP 不兼容,因此被忽略(直到您删除不正确的 dataType)。


crossDomain: true,

这没有效果,除非你正在制作:

  • non-JSONP请求
  • 相同来源
  • 它被重定向到 不同的 来源

……非常难得。


headers: {
    "Access-Control-Allow-Origin": "*"
 },

Access-Control-Allow-Origin 是一个 响应 header。它不属于请求。尝试将其添加到请求中会导致额外的问题,因为它会使请求预检。

(至少,如果您没有说 dataType: 'jsonp' 就是这种情况,因为添加请求 headers 与 JSONP 不兼容)。


客户端所需的一切

您在客户端上唯一需要的代码是:

function logResults(result){
   console.log(result);
}

$.ajax({
    url: u,
    success: logResults
});

如果是 cross-origin 请求,您从中请求数据的 服务器 将需要使用 CORS to grant you permission 来访问它。