【问题标题】:AJAX call error - status of 400 (Bad Request)AJAX 调用错误 - 状态 400(错误请求)
【发布时间】:2015-06-12 18:45:26
【问题描述】:

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

当我在终端中执行 CURL 时,我能够获取 JSON 数据: curl -X GET 'http://www.bloomapi.com/api/search?offset=0&key1=last_name&op1=eq&value1=LIN&key2=first_name&op2=eq&value2=JOHN'

出于以下目的 - 我只是将参数硬编码到 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"));

【问题讨论】:

标签: javascript jquery ajax


【解决方案1】:

这是一个奇怪的...您的代码实际上基本上是正确的,但是,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 解决了这个问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-09-13
    • 2017-09-07
    • 2015-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-09
    • 1970-01-01
    相关资源
    最近更新 更多