如何在javascrript中使用AJAX从URL获取JSON数据

时间:2019-07-01 07:44:29

标签: javascript json

在这里,当我尝试在浏览器控制台中打印响应时。它显示了此错误

跨域读取阻止(CORB)阻止了MIME类型为text / html的跨域响应https://script.google.com/macros/s/AKfycbwmqG55tt2d2FcT_WQ3WjCSKmtyFpkOcdprSITn45-4UgVJnzp9/exec?url=http://35.230.52.177:8095/OneSoftTracking/rest/tracking/consignment/AE101632?hostname=aastha-enterprises.com&callback=jQuery1124008693115102408444_1561964934754&_=1561964934755。有关更多详细信息,请参见https://www.chromestatus.com/feature/5629709824032768

While when I get data in Postman like:

This warning or error showing :

这是我的代码:

var module = {
    x: 42,
    getX: function() {
        return this.x;
    }
}

var boundGetX = module.getX.bind(module);
console.log(boundGetX());
// output: 42

1 个答案:

答案 0 :(得分:0)

您尚未向我们显示您的真实代码。

错误消息清楚地显示了查询字符串中的callback,它不在您的URL中,因此不应添加,因为您在jQuery ajax配置中没有说dataType: 'jsonp'

您的实际代码已配置为使用JSONP。

JSONP响应是一个JavaScript程序(特别是一个调用带有一组参数的单个函数的程序)。您从服务器获得的响应是​​一个HTML文档(内容类型为text/html而不是application/javascript)。

CORB错误是浏览器告诉您响应是HTML而不是JSONP,因此它拒绝尝试执行。

邮递员的屏幕快照显示您期望得到JSON(仍然不是JSONP)响应(但是您都没有得到)。

您需要:

  • 更改服务器以使用JSONP响应
  • 更改请求以请求正确的数据(还可能更改服务器以授予您使用CORS读取数据的权限)

进一步阅读:


关于代码的注释:

    async: true,

这是默认设置,请摆脱它

    crossDomain: true,

这是跨源请求的默认设置,请摆脱它。

    crossOrigin: true,

这是跨源请求的默认设置,请摆脱它。

    method: "GET",

这是默认设置,请摆脱它

        "Content-Type": "application/json",

您正在发出GET请求。没有用于描述其类型的请求正文。这是无稽之谈。摆脱它。

        "Access-Control-Allow-Origin": "*",
        'Access-Control-Allow-Methods': 'GET',
        'Access-Control-Allow-Credentials': true,

这些是响应标头,而不是请求标头。把它们放在请求上是胡说八道。摆脱它们。

        "Accept": "*/*",

几乎可以肯定默认是可以的。您可能不需要覆盖它。

        "Cache-Control": "no-cache",

主要配置选项“缓存”可能是比显式设置标头更好的选择。

        "Postman-Token": "bea2b074-eefc-473e-84d7-b680a07ed7df,dafa4f5c-94af-4efe-967f-75a9fe185a1e",

服务器关心此问题的可能性很小。您可能可以摆脱它。