我的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文件是导致我出现问题的原因,但我们会看到任何解决方案。有人会有任何想法或建议吗?
答案 0 :(得分:1)
Ajax加载是异步的,在模态完成加载时使用success函数执行函数
尝试:
$( document ).ready(function() {
$("#load_modal").load("pages/modal_form.html",function(){
IncidentManager.loadReportIncidents();
});
});
答案 1 :(得分:0)
在jQuery中使用ajax函数的success / complete块。