AJAX 调用错误 - 状态 400(错误请求)

2024-03-02

我正在尝试使用 BloomAPI 通过查询医生的名字和姓氏来检索医生的 NPI 号码。我正在使用 Jquery Ajax 发出 JSON 数据的获取请求。

当我在终端中执行 CURL 时,我能够获取 JSON 数据:curl -X GET ''

出于以下目的 - 我只是将参数硬编码到 URL 中。 我收到“无法加载资源:服务器响应状态为 400(错误请求”)错误。知道我可能做错了什么吗?

$.ajax({
    type: 'GET',
    url: 'http://www.bloomapi.com/api/search?offset=0&key1=last_name&op1=eq&value1=LIN&key2=first_name&op2=eq&value2=JOHN',
   dataType: 'jsonp'
  }).done(function(server_data) {
    console.log(server_data)
  }).fail(console.log("failed"));

这是一个奇怪的......你的代码实际上基本上是正确的,但是,bloomapi 似乎不支持以 jquery 的方式禁用缓存。

当你进行 jquery 调用时,实际的 url 会变成这样:

http://www.bloomapi.com/api/search?offset=0&key1=last_name&op1=eq&value1=LIN&key2=first_name&op2=eq&value2=JOHN&callback=jQuery111207365460020955652_1428455335256&_=1428455335257

回调是一个 jsonp 构造,而 _ 是一种破坏缓存的方法。然而,bloomapi 似乎不喜欢这样:

jQuery111207365460020955652_1428455335256({"name":"ParameterError","message":"_ are unknown parameters","parameters":{"_":"is an unknown parameter"}});

为了解决这个问题,您可以禁用缓存清除,如下所示:

$.ajax({
    type: 'GET',
    url: 'http://www.bloomapi.com/api/search?offset=0&key1=last_name&op1=eq&value1=LIN&key2=first_name&op2=eq&value2=JOHN',
    dataType: 'jsonp',
    cache: true
}).done(function(server_data) {
    console.log(server_data)
}).fail(function() { console.log("failed") });

如果这是一个问题,您将必须小心如何破坏缓存; API 提供商也许能够提供有关如何执行此操作的反馈。

将来,您可以使用网络调试器轻松检查收到的错误/发送的内容;我用 Fiddler 来解决这个问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

AJAX 调用错误 - 状态 400(错误请求) 的相关文章

随机推荐