Jquery函数未正确执行

时间:2015-11-30 17:55:14

标签: javascript jquery html

我的jquery函数的计时执行有问题。我的函数dosent总是正确触发或有时根本不触发。我也有一个我单独执行的数据,但没有任何正确的同步。我现在设置的方式是我在一个名为modal_form.html的单独html页面上拥有所有功能。我这样做是因为我有许多页面调用这些函数并加载其他类似的内容。

以下是我的modal_form.html

上的函数示例
var IncidentManager = {
    // Returns the url of the application server of a demo web app.
    basePath: function () { return '../../../../_vti_bin/listData.svc'; },
    // Loads all incidents closed or opened. This is mainly used for the report page.
    loadReportIncidents: function () {
        $.ajax({
            url: this.basePath() + '/GDI_PROD_Incidents?$orderby=PrioritéValue desc',
            dataType: 'json',
            cache: false,
            success: function (data) {

                $.each(data.d.results, function (index, incident) {

                $('#example tbody').append(
                "<tr>" +
                "<td class='over_flow_control'> <button class='edit_button btn btn-info btn-circle btn-xs' name ='btnSubmit' type='button' value='Edit' data-ID='"+incident.ID+"'><i class='glyphicon glyphicon-edit'></i></button></td>" +
                "<td class='over_flow_control'>" + incident.Incident + "</td>" +
                "<td class='over_flow_control'>" + incident.PrioritéValue + "</td>" +
                "<td class='over_flow_control'>" + incident.Composante + "</td>" +
                "<td class='over_flow_control text-left'>" + incident.Description + "</td>" +
                "<td class='over_flow_control'>" + incident.Date_de_début + "</td>" +
                "<td class='over_flow_control'>" + incident.ResponsableValue + "</td>" +
                "</tr>");                   
                })
            }
        });
    },  
};

以下是我的报告页面中的一些代码:

<script type="text/javascript">  
$("#load_modal").load("pages/modal_form.html");  

$( document ).ready(function() {
setTimeout(function() { 
IncidentManager.loadReportIncidents();
}, 500);
</script>

我不得不使用一个setTimeout加载IncidentManager.loadReportIncidents();而没有它根本没有加载。但是,我的功能似乎总是正确地发射,并且通常需要一些刷新才能正常工作。我一直在增加延迟,但似乎是最有效的方法。

我认为从外部加载HTML文件是导致我出现问题的原因,但我们会看到任何解决方案。有人会有任何想法或建议吗?

2 个答案:

答案 0 :(得分:1)

Ajax加载是异步的,在模态完成加载时使用success函数执行函数

尝试:

$( document ).ready(function() {
$("#load_modal").load("pages/modal_form.html",function(){
IncidentManager.loadReportIncidents();
}); 
}); 

答案 1 :(得分:0)

在jQuery中使用ajax函数的success / complete块。