繁体   English   中英

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

[英]AJAX call error - status of 400 (Bad Request)

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

当我在终端中执行CURL时,我能够获取JSON数据:curl -X GET'http: //www.bloomapi.com/api/search ?offset = 0&key1 =last_name&op1 = eq&value1 = LL&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"));

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM