2013-02-27 123 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; 
相關問題