【问题标题】:How can i call javascript function from a href?如何从 href 调用 javascript 函数?
【发布时间】:2015-02-12 15:39:21
【问题描述】:

我有两个javascript函数madeAjaxCall()和getBookCall(bookId)分别获取书单和章节列表。

我正在尝试从函数 madeAjaxCall() 中调用 getBookCall(bookId)。

function madeAjaxCall(){
 $.ajax({
  type: "GET",
  url: "http://localhost:8080/restApp/book/list",
  contentType:"application/json; charset=utf-8",
  dataType:"json",
  success: function(data){
            delete_table();
            if(data){
                var len = data.length;
                var txt = "";
                txt += "<tr><th>"+"bookId"+"</th><th>"+"bookName"+"</th><th>"+"Chapter Details"+"</th></tr>";   
                if(len > 0){
                    for(var i=0;i<len;i++){
                        if(data[i].bookId != null && data[i].bookName != null){                                        
                            /* txt += "<tr><td>"+data[i].bookId+"</td><td>"+data[i].bookName+"</td><td><a href="+ "http://localhost:8080/restApp/chapter/list/"+ data[i].bookId +">"+"Chapter details"+"</a></td></tr>";       */           
                             txt += "<tr><td>"+data[i].bookId+"</td><td>"+data[i].bookName+"</td><td><a href="+ "#"+" "+ "onclick=" +  +"getBookCall("+ data[i].bookId + ")"+";return false;" +">"+"Chapter details"+"</a></td></tr>";                  

                        }
                    }
                    if(txt != ""){
                        $("#table1").append(txt).removeClass("hidden");
                    }
                }
            }
        },
        error: function(jqXHR, textStatus, errorThrown){
            alert('error: ' + textStatus + ': ' + errorThrown);
        }
    });
    return false;
}

还有其他功能

function getBookCall(bookId){
 $.ajax({
  type: "GET",
  url: "http://localhost:8080/restApp/chapter/list/"+bookId,
  contentType:"application/json; charset=utf-8",
  dataType:"json",
  success: function(data){
            delete_table2();
            if(data){
                var len = data.length;
                var txt = "";
                txt += "<tr><th>"+"chapterId"+"</th><th>"+"chapterName"+"</th></tr>";
                if(len > 0){
                    for(var i=0;i<len;i++){
                        if(data[i].chapterId != null && data[i].chapterName != null){
                            txt += "<tr><td>"+data[i].chapterId+"</td><td>"+data[i].chapterName+"</td></tr>";                   
                        }
                    }
                    if(txt != ""){
                        $("#table2").append(txt).removeClass("hidden");
                    }
                }
            }
        },
        error: function(jqXHR, textStatus, errorThrown){
            alert('error: ' + textStatus + ': ' + errorThrown);
        }
    });
    return false;
}

我从 ma​​deAjaxCall() 函数获取 JSON 格式的书籍列表并将列表附加到表格中。我想在 href 的帮助下从函数 madeAjaxCall() 中调用函数 getBookCall(bookId) 。但我无法在函数 madeAjaxCall() 中使用 href 调用函数 getBookCall(bookId)

这是函数 madeAjaxCall 中无法调用函数 getBookCall(bookId) 的行。

txt += "<tr><td>"+data[i].bookId+"</td><td>"+data[i].bookName+"</td><td><a href="+ "#"+" "+ "onclick=" +  +"getBookCall("+ data[i].bookId + ")"+";return false;" +">"+"Chapter details"+"</a></td></tr>";                   

【问题讨论】:

  • "onclick=" + +"getBookCall("+ 你可以看到onclick=之后有两个+
  • 谢谢你。我犯了一个愚蠢的错误。

标签: javascript jquery ajax json


【解决方案1】:

这里在示例中,我使用自定义data-* 属性来存储bookid,可以使用.data() 获取,创建你的锚点:

txt += '<a class="myBookLink" href="#" data-bookid="' + data[i].bookId + '">Chapter details</a>"; 

然后使用Event Delegation使用.on()deleged-events方式绑定锚点的点击事件处理函数。

$(document).on('click', function(){
    getBookCall($(this).data('bookid'))
    return false;
})

重要提示:代替document,您应该始终使用最近的静态容器。

对于即时解决方案,请正确使用引号。

txt += "<tr><td>" 
    + data[i].bookId 
    + "</td><td>" 
    + data[i].bookName
    +'</td><td><a href="#" onclick="getBookCall('+ data[i].bookId + ');return false;">Chapter details</a></td></tr>'; 

而不是

txt += "<tr><td>"+data[i].bookId+"</td><td>"+data[i].bookName+"</td><td><a href="+ "#"+" "+ "onclick=" +  +"getBookCall("+ data[i].bookId + ")"+";return false;" +">"+"Chapter details"+"</a></td></tr>";  

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-04-26
    • 2014-08-24
    • 2021-03-04
    • 1970-01-01
    • 2010-12-19
    • 1970-01-01
    相关资源
    最近更新 更多