Javascript 加载页面时不加载JSON部分

Javascript 加载页面时不加载JSON部分,javascript,jquery,ajax,Javascript,Jquery,Ajax,有人能告诉我如何生成和调用我自己的jquery函数吗 以以下代码为例:- <script> $(document).ready(function () { $.getJSON("http://127.0.0.1:8000/json/storylist/", function (data) { $.each(data.stories, function (i, item) {

有人能告诉我如何生成和调用我自己的jquery函数吗

以以下代码为例:-

<script>
    $(document).ready(function () {
        $.getJSON("http://127.0.0.1:8000/json/storylist/",
            function (data) {
                $.each(data.stories, function (i, item) {
                    $row = item.title;
                    $('#storylist tr:last').after("<tr><td>" + item.id + "</td><td>" + item.date + "</td><td>" + item.title + "</td><td></td><td>" + item.priority + "</tr>");
                    if (i == 3) return false;
                });
            });

        $("#refresh").click(function (event) {
            alert("yay u clicked refresh!");
            $.getJSON("http://127.0.0.1:8000/json/storylist/",
                function (data) {
                    $.each(data.stories, function (i, item) {
                        $row = item.title;
                        $('#storylist tr:last').after("<tr><td>" + item.id + "</td><td>" + item.date + "</td><td>" + item.title + "</td><td></td><td>" + item.priority + "</tr>");
                        if (i == 3) return false;
                    });
                });
        });
    });
</script> 

$(文档).ready(函数(){
$.getJSON(“http://127.0.0.1:8000/json/storylist/",
功能(数据){
$.each(data.stories,function(i,item){
$row=item.title;
$(“#故事列表tr:last”)。在(“+item.id+”“+item.date+”“+item.title+”“+item.priority+”)之后;
如果(i==3)返回false;
});
});
$(“#刷新”)。单击(函数(事件){
警报(“yay-u单击刷新!”);
$.getJSON(“http://127.0.0.1:8000/json/storylist/",
功能(数据){
$.each(data.stories,function(i,item){
$row=item.title;
$(“#故事列表tr:last”)。在(“+item.id+”“+item.date+”“+item.title+”“+item.priority+”)之后;
如果(i==3)返回false;
});
});
});
});
您可以看到JSON调用和编辑表的代码被复制了2次。我的目的是让JSON部分在页面加载时运行一次,每次用户单击刷新链接时运行一次。如果我继续使用当前的代码,显然这将是维护它的一个主要PITA


有什么线索吗

尝试将JSON函数包装到另一个函数中:

function JSONrequest(){
     $.getJSON("http://127.0.0.1:8000/json/storylist/",
        function(data){
          $.each(data.stories, function(i,item){
                $row = item.title;
                $('#storylist tr:last').after("<tr><td>" + item.id + "</td><td>" + item.date + "</td><td>" + item.title + "</td><td></td><td>" + item.priority + "</tr>");
            if ( i == 3 ) return false;
          });
        });

}

$(document).ready(function(){JSONrequest()});
$("#refresh").click(function(){JSONrequest()});
函数JSONrequest(){
$.getJSON(“http://127.0.0.1:8000/json/storylist/",
功能(数据){
$.each(data.stories,function(i,item){
$row=item.title;
$(“#故事列表tr:last”)。在(“+item.id+”“+item.date+”“+item.title+”“+item.priority+”)之后;
如果(i==3)返回false;
});
});
}
$(document).ready(函数(){JSONrequest()});
$(“#刷新”)。单击(函数(){JSONrequest()});

现在,当您调用JSONrequest函数时,您总是执行相同的代码块,实现这一点的一种方法是简单地声明您自己的函数—一个普通的JavaScript函数—并将该函数传递给
。单击()
方法,然后从
.ready()
调用它:

函数requestStories(){
$.getJSON(“http://127.0.0.1:8000/json/storylist/",
功能(数据){
$.each(data.stories,function(i,item){
$row=item.title;
$(“#故事列表tr:last”)。在(“+item.id+”“+item.date+”“+item.title+”“+item.priority+”)之后;
如果(i==3)返回false;
});
});
}); 
}
$(文档).ready(函数(){
$(“#刷新”)。单击(请求故事);
请求故事();
});
或者,如果
.click()
处理程序仅执行JSON请求,则您可以在给它函数后立即调用
.click()
,使其运行。例如:

$(文档).ready(函数(){ $(“#刷新”)。单击(函数(){ $.getJSON(“, 功能(数据){ $.each(data.stories,function(i,item){ $row=item.title; $(“#故事列表tr:last”)。在(“+item.id+”“+item.date+”“+item.title+”“+item.priority+”)之后; 如果(i==3)返回false; }); }); }); 返回false; })。单击(); });


请注意额外的
。请在末尾单击()。也就是说,“现在,我已经为您提供了一个在单击
#refresh
时运行的函数,假设单击了
#refresh
。请记住,此函数将运行与此单击相关的所有代码,因此只有当此函数是您唯一要运行的函数时,此函数才有效。

非常感谢。。。现在可以很好地工作了。为什么还要麻烦“function(){JSONrequest()}”??为什么不只是“JSONrequest”?
function requestStories() {
    $.getJSON("http://127.0.0.1:8000/json/storylist/",
        function(data){
          $.each(data.stories, function(i,item){
                $row = item.title;
                $('#storylist tr:last').after("<tr><td>" + item.id + "</td><td>" + item.date + "</td><td>" + item.title + "</td><td></td><td>" + item.priority + "</tr>");
            if ( i == 3 ) return false;
          });
        });
    }); 
}

$(document).ready(function() {
    $("#refresh").click(requestStories);
    requestStories();
});