0

REST API からプルしていくつかの書籍データを表示するシンプルな JavaScript クライアントがありますが、関数 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); 
    });  
});


});  
4

2 に答える 2

0

提供したコードでは何も返されません。HTML を jQuery オブジェクトに追加するだけです。return ステートメントを追加してみてください

return html;
于 2013-02-27T11:53:14.133 に答える
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));

上記のコードは、ブック行を常に最後に追加します。

于 2013-02-27T12:02:51.377 に答える