在 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 来访问它。
我正在尝试从驻留在服务器上的文本文件中获取数据。当我在浏览器选项卡中放置 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 来访问它。