我有一个简单的JavaScript客户端,它从REST API中提取一些书籍数据,但我似乎无法调用函数createBookRow(bookid)并将相应的html字符串返回到文档就绪函数,在该函数中调用它,
目前正在正确生成输出,并通过html页面上的.row-fluid追加验证,欢迎提出想法或建议
function createBookRow(bookid)
{
$.get('http://mysite.co.uk/atiwd/books/course/'+bookid+'/xml', function(xml){
$(xml).find('book').each(function(){
var $book = $(this);
var id = $book.attr("id");
var title = $book.attr("title");
var isbn = $book.attr("isbn");
var borrowedcount = $book.attr("borrowedcount");
var html = '<div class="span3"><img name="test" src="http://covers.openlibrary.org/b/isbn/'+isbn+'-L.jpg" width="32" height="32" alt=""></p>' ;
html += '<p> ' + title + '</p>' ;
html += '<p> ' + isbn + '</p>' ;
html += '<p> ' + borrowedcount + '</p>' ;
html += '</div>';
$('.row-fluid').append($(html));
});
});
}
$(document).ready(function()
{
$.get('xml/courses.xml', function(xml){
$(xml).find('course').each(function(){
var $course = $(this);
var id = $course.attr("id");
var title = $course.text();
var html = '<div class="span12"><p>' + title + '</p><row id="'+id+'" >'+createBookRow(id)+'</row></div>' ;
$('.row-fluid').append($(html));
$('.loadingPic').fadeOut(1400);
});
});
});
答案 0 :(得分:0)
您没有在您提供的代码中返回任何内容。您只需将一些HTML附加到jQuery对象。尝试添加一个return语句
return html;
答案 1 :(得分:0)
该行
var html = '<div class="span12"><p>' + title + '</p><row id="'+id+'" >'+createBookRow(id)+'</row></div>' ;
应该只是
var html = '<div class="span12"><p>' + title + '</p><row id="'+id+'" ></row></div>' ;
createBookRow(id);
createBookRow(id)函数正在发出get请求以获取一些异步发生的细节。除非你明确提到它是一个同步调用(不建议)。
我想你需要的功能是为课程渲染一些行,在你需要显示的书籍细节之间。在这种情况下,您需要明确说明需要附加书行的位置。
$('.row-fluid').append($(html));
上面的代码总是会在最后添加书行。