我正在尝试从ISBNdb API提交用户表单时提取图书数据。我根据需要在url中使用JSON。截至目前,我正在使用表单按books category进行搜索(请参阅下半页)。当我输入搜索词时,我在控制台中收到2个错误:
资源解释为脚本但以MIME类型传输 text / plain的: “http://isbndb.com/api/v2/json/J6FR9HT6/books?jsoncallback=jQuery1111037271023145876825_1404698815454&q=science&_=1404698815455”。
jquery.min.js:4 Uncaught SyntaxError:意外的令牌:
我看到了我期待的q=science
,但是jQuery似乎还在添加什么?任何帮助很多人赞赏!
<!DOCTYPE html>
<html lang="">
<head>
<meta charset="utf-8">
<title></title>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script>
$(document).ready(function() {
$('form').submit(function (event) {
event.preventDefault();
var searchTerm = $('#search').val();
// the AJAX part
var isbndbAPI = 'http://isbndb.com/api/v2/json/J6FR9HT6/books?jsoncallback=?';
var bookOptions = {
q: searchTerm
};
function displayBookData(data) {
var bookHTML = '<ul>';
$.each(data.data,function(i,book) {
bookHTML += '<li>';
bookHTML += book.title;
bookHTML += '</li>';
}); // end each
bookHTML += '</ul>';
$('#book-results').html(bookHTML);
}
$.getJSON(isbndbAPI, bookOptions, displayBookData);
}); // end submit
}); // end ready
</script>
</head>
<body>
<form>
<label for="search">Type a search term</label>
<input type="search" name="search" id="search">
<input type="submit" value="Search" id="submit">
</form>
<div id="book-results"></div>
</body>
</html>
更新
好像收到JSON好了,我可以在控制台中看到结果。仍然感到困惑,因为这对我来说都是新的。另外,我可能也没有正确地将它显示为HTML。
答案 0 :(得分:1)
原始帖子中的url
未包含api所需的参数:
error: "'query' or 'q' is a required parameter"
请求网址:http://isbndb.com/api/v2/xml/mykey/books ?q =科学
尝试
$.getJSON("https://query.yahooapis.com/v1/public/yql?q=select"
+"* from json where url='http://isbndb.com/api/v2/json/J6FR9HT6/books?q=science'"
+"&format=json&diagnostics=true&callback=?"
, function(data, textStatus, jqxhr) {
console.log(data.query.results.json.data);
$.each(data.query.results.json.data, function(index, value) {
$("<li>", {"text" : value.title +", "
+ (value.author_data
? (value.author_data.name
? value.author_data.name
: value.author_data.id)
: void(0)) }).appendTo("ul");
});
})
.fail(function(jqxhr, textStatus, errorThrown) {
console.log(textStatus, errorThrown);
});
答案 1 :(得分:0)
您提到的API不支持JSONP。作为documentation状态,它仅支持JSON,YAML和XML。
响应格式
API将以3种不同格式之一序列化它的返回数据:
Json - / api / v2 / json / my-api-key
Yaml - / api / v2 / yaml / my-api-key
XML - / api / v2 / xml / my-api-key
jQuery尝试将返回的JSON文件视为JS文件,但它不会导致错误。
答案 2 :(得分:0)
您的服务器端需要更改其内容类型以提供JSON,或者您需要获取数据并将其视为文本,然后转换为JSON。
看起来你正在尝试请求JSONP ...不确定你是否可以/如何轻松将其作为文本下拉然后将其转换并仍然可以运行回调。