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

时间:2015-04-08 00:46:26

标签: javascript jquery ajax

我尝试使用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'

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

1 个答案:

答案 0 :(得分:6)

这是一个奇怪的...你的代码实际上基本上是正确的,但是,似乎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提供者可能能够提供有关如何执行此操作的反馈。

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