我对某个问题有疑问。由于我的应用程序使用部分视图和这些部分视图由ajax调用加载,每个部分视图使用javascript并包含js文件,最终调用数据库来绑定该特定视图的数据。 现在,加载视图所花费的时间比预期的多,因为它加载了js文件,而js文件再次调用服务器来提取记录。我希望我的视图被加载,然后js文件使db调用绑定数据。类似下面的内容 -
如果(部分视图已加载) 加载js文件,它将进行ajax调用,db最终将绑定数据。
这至少会加载视图,用户将看到一些东西,而不是等待装载机的空白背景。 下面是我加载PartialView的脚本。
function loadview(action, hassubmenu, _fromtab) {
if (hassubmenu == 'true') {
return false;
}
if (!_fromtab) {
$('.process').show();
$('.mainbody').html('');
}
// call ajax to load view
$.ajax({
url: urlheader + "Home/LoadView/",
type: 'POST',
data: {
'view': action
},
success: function (data) {
// This outputs the result of the ajax request
$('.process').hide();
if (!_fromtab) {
$('.mainbody').html('').html(data);
// disable appfilter from start screen
var ostype = $('select#selection').find('option:selected').data('ostype');
var did = $('select#selection').find('option:selected').val();
if (ostype.toLowerCase() == 'ios' && action == 'Start') {
$('div.appfilter').hide();
$('#liAppFilter').hide();
}
getsyncinfo(did, false);
if (_currenttab != undefined) {
reloadCurrentFilterTab(_currenttab);
}
}
else
$('.chicoAppsUrlsDetails').html('').html(data);
},
error: function (errorThrown) {
console.log(errorThrown);
}
});
}
答案 0 :(得分:1)
如果我理解正确,js事件不会在你的部分视图中触发html(那些是ajaxed)
这是因为加载到页面上的html是在js之后(它绑定了你的事件)。
您需要将局部视图中的doms上的任何事件放在 document 元素上,而不是使用jquery on方法来指定选择器。
例如
GET / HTTP/1.1
Host: 127.0.0.1:1026
Accept: text/html,...
User-Agent: Mozilla/5.0 ...
Accept-Encoding: gzip, deflate
Accept-Language: en-us
Connection: Keep-Alive
这样,您可以使用ajax向页面添加部分内容,部分中的doms仍会触发事件。