While循环请求JSON
While loop requesting JSON
我一直在尝试做一些我认为很简单的事情,但现在我很确定我已经很好地并且真正地过度简化了它,或者只是在我的循环中搞砸了一些基本的东西。我试图通过包含JSON对象的链接列表搜索,以找到包含特定数据的特定链接。
我正在查看的JSON链接如下所示:
链接1:
{"genre": "fantasy", "title": "Book 1"}
链接2:
{"genre": "scifi", "title": "Book 2"}
我的循环的目标是找到一本类型为"科幻"的书,但是我当前的代码只是导致或没有发生任何事情。如果有人能发现我做错了什么,请告诉我。如果不是很明显,我在这方面是新手,所以任何建议都是非常欢迎的。
function find_book(){ // called by button onclick
var i = curr_line+1 // current line's default value is 0
var x = 0;
var limit = bookcount-1; //bookcount is total number of books
while(x != 1) {
request= new XMLHttpRequest();
request.open("GET","http://example.com/books/?book="+i,true);
request.onreadystatechange=function() {
if(request.readyState==4 && request.status==200) {
var jsonbook = JSON.parse(request.responseText);
alert('genre is'+jsonbook.genre);
}
}
request.send()
if(jsonbook.genre == "scifi"){
alert('book is at '+i);
x=1;
}
if(i>limit){
alert('end of book list');
x=1;
}
i++;
}
}
JSON书超出范围。此外,ajax调用异步发生(这是ajax中的a),尝试递归地调用一个直接的函数。某物:
function check_book(bookID, limit) {
request = new XMLHttpRequest();
request.open("GET", "http://example.com/books/?book=" + bookID, true);
request.onreadystatechange = function () {
if (request.readyState == 4 && request.status == 200) {
var jsonbook = JSON.parse(request.responseText);
alert('genre is' + jsonbook.genre);
if (jsonbook.genre == "scifi") {
alert('book is at ' + bookID);
return;
} else if (bookID > limit) {
alert('end of book list');
return,
} else {
bookID++;
check_book(bookID, limit)
}
}
}
request.send()
}
function find_book(){ // called by button onclick
var i = curr_line+1 // current line's default value is 0
var limit = bookcount-1; //bookcount is total number of books
check_book(i, limit);
}
第一次观察。试着把下面的代码移到你的alert('genre is'+jsonbook.genre);
行下面。
if(jsonbook.genre == "scifi"){
alert('book is at '+i);
x=1;
}
if(i>limit){
alert('end of book list');
x=1;
}
它应该像下面这样,因为调用是异步的,一旦它返回,你必须用你的逻辑处理jsonobject
if(request.readyState==4 && request.status==200)
{
var jsonbook = JSON.parse(request.responseText);
alert('genre is'+jsonbook.genre);
if(jsonbook.genre == "scifi"){
alert('book is at '+i);
x=1;
}
if(i>limit){
alert('end of book list');
x=1;
}
}
相关文章:
- Javascript:JSON请求仅在第一次工作
- 神秘的ajax json请求问题jQuery
- Ajax/JSON请求php处理页面
- JSON请求返回.txt文件
- 在设置用户后,从 JavaScript JSON 请求中获取 Web 服务 (asmx) ASP.NET Windows
- 对 URL 的 JSON-P 请求不起作用
- React返回未定义的JSON请求
- D3 Json请求获取XmlHttpRequest错误:访问控制允许原点不允许原点为null
- 如何在浏览器中压缩json请求数据
- 向ajax json请求添加缓存
- 如何在不发生冲突的情况下处理多个json请求
- Json 请求与 YQL 和 MooTools
- 两个 JSON 请求的列表
- Jquery JSON 请求的语法错误问题
- (对象对象)从节点中的 JSON 请求返回
- 有关多个 Facebook Json 请求的性能建议
- 如何在 d3 中从 json 请求数据
- 用于发送 ajax/JSON 请求的 JQuery 快捷方式
- 如何在 JavaScript 中执行跨域 JSON 请求
- JSON 请求错误 500