我尝试使用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"));
答案 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来解决这个问题。