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

我正在尝试使用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搞清楚了。