【问题标题】:Pass string from one function to the next javascript将字符串从一个函数传递到下一个 javascript
【发布时间】:2013-02-13 05:04:14
【问题描述】:

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


});  

【问题讨论】:

  • createBookRow是一个异步函数,不能这样用
  • '+' 是字符串的连接运算符。但是你的函数没有返回任何字符串
  • 我创建了一个 jsFiddle,但我需要从 courses.xml 中获取一些数据来完成它:jsfiddle.net/ruslans/Sd3zb
  • html 只是一个字符串变量。你为什么在追加中使用 $(html) 。应该是$('.row-fluid').append(html);

标签: javascript jquery xml api function


【解决方案1】:

您提供的代码中没有返回任何内容。您只需将一些 HTML 附加到 jQuery 对象。尝试添加return语句

return html;

【讨论】:

    【解决方案2】:

    线

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-10
      • 2019-10-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多