将字符串从一个函数传递到下一个javascript

时间:2013-02-27 11:44:07

标签: javascript jquery xml api function

我有一个简单的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); 
    });  
});


});  

2 个答案:

答案 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));

上面的代码总是会在最后添加书行。