2013-02-27 84 views
0

我有一个简单的JavaScript客户端从REST API中提取一些书籍数据,但是我似乎无法调用函数createBookRow(bookid)并返回相应的html字符串该文件准备功能,其中它被称为,从一个函数传递字符串到下一个javascript

输出正在正确产生由追加验证.row流体的HTML页面上,意见或建议,欢迎

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); 
    }); 
}); 


}); 
+1

'createBookRow'是一个异步函数,不能像那样使用 – anhulife 2013-02-27 11:54:26

+0

'+'是字符串的串接运算符。但你的函数不返回任何字符串 – 999k 2013-02-27 11:56:22

+0

我创建了一个jsFiddle,但我需要一些来自courses.xml的数据来完成它:http://jsfiddle.net/ruslans/Sd3zb/ – Tsar 2013-02-27 12:00:01

回答

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

上面的代码将总是在最后附加书行。

0

你AREN”在你提供的代码中返回任何东西。您只需将一些HTML附加到jQuery对象。尝试添加return语句

return html; 
相关问题