Javascript 为什么在ajax请求后未加载document.ready
我想在我的局部视图中单击标记后调用java脚本,它第一次工作,但在使用ajax并呈现我的局部视图后第二次工作,它不会转到标记事件。让我们展示我的代码,让您更好地掌握它。这是我的父视图:Javascript 为什么在ajax请求后未加载document.ready,javascript,ajax,asp.net-core,partial-views,razor-pages,Javascript,Ajax,Asp.net Core,Partial Views,Razor Pages,我想在我的局部视图中单击标记后调用java脚本,它第一次工作,但在使用ajax并呈现我的局部视图后第二次工作,它不会转到标记事件。让我们展示我的代码,让您更好地掌握它。这是我的父视图: @using X.PagedList @using X.PagedList.Mvc.Core @using X.PagedList.Mvc.Core.Common @model X.PagedList.IPagedList<Services.ViewModel.Admin.Nurse.NurseDetail
@using X.PagedList
@using X.PagedList.Mvc.Core
@using X.PagedList.Mvc.Core.Common
@model X.PagedList.IPagedList<Services.ViewModel.Admin.Nurse.NurseDetailsViewModel>
@{
ViewData["Title"] = "RegisteredNurseList";
Layout = "~/Views/Shared/_AdminLayout.cshtml";
}
// LOT OF HTML TAG CODE HERE I JUST IGNOR THEM...
<section id="table-transactions">
<!-- datatable start -->
<div id="nursesList">
<partial name="PaginatedNurses" model="Model" />
</div>
<!-- datatable ends -->
</div>
</section>
@section modalSection
{
<script>
window.$(document).ready(function () {
window.$('#RegisteredNursePaginated').find('a[href]').on('click',
function (e) {
e.preventDefault();
var sortOrder = window.$("#sortOrder").val();
var sortType = window.$("#sortType").val();
var minAge = window.$("#minAge").val();
var maxAge = window.$("#maxAge").val();
var page = getQueryStringValue(this, 0).replace('page=', '');
// window.$("#pageGetter").val(page);
debugger;
console.log(this);
window.$.ajax({
url: "/admin/RegisteredNurseList/",
type: 'GET',
data: {
page: page,
SortOrder: sortOrder,
sortType: sortType,
MinAge: minAge,
MaxAge: maxAge
},
success: function (result) {
debugger;
window.$('#RegisteredNursePaginated').html(result);
}
});
return false;
});
});
</script>
}
正如您看到的,有一个html标记帮助程序@html.PagedListPager((IPagedList)Model,…
这是使用
标记的。我的意思是,单击该标记后,它将进入父modelssection
:
<script>
window.$(document).ready(function () {
window.$('#RegisteredNursePaginated').find('a[href]').on('click',
function (e) {
e.preventDefault();
var sortOrder = window.$("#sortOrder").val();
var sortType = window.$("#sortType").val();
var minAge = window.$("#minAge").val();
var maxAge = window.$("#maxAge").val();
var page = getQueryStringValue(this, 0).replace('page=', '');
// window.$("#pageGetter").val(page);
debugger;
console.log(this);
window.$.ajax({
url: "/admin/RegisteredNurseList/",
type: 'GET',
data: {
page: page,
SortOrder: sortOrder,
sortType: sortType,
MinAge: minAge,
MaxAge: maxAge
},
success: function (result) {
debugger;
window.$('#RegisteredNursePaginated').html(result);
}
});
return false;
});
});
</script>
窗口。$(文档).ready(函数(){
window.$(“#RegisteredNursePaginated”).find('a[href')。on('click',
职能(e){
e、 预防默认值();
var sortOrder=window.$(“#sortOrder”).val();
var sortType=window.$(“#sortType”).val();
var minAge=window.$(“#minAge”).val();
var maxAge=window.$(“#maxAge”).val();
var page=getQueryStringValue(this,0).replace('page=','');
//window.$(“#pageGetter”).val(第页);
调试器;
console.log(this);
window.$.ajax({
url:“/admin/RegisteredNurseList/”,
键入:“GET”,
数据:{
第页:第页,
巫师:巫师,
sortType:sortType,
米纳奇:米纳奇,
MaxAge:MaxAge
},
成功:功能(结果){
调试器;
window.$('#RegisteredNursePaginated').html(结果);
}
});
返回false;
});
});
它第一次工作,但在使用ajax并通过控制器渲染后,在单击
标记后,它将不会再转到该部分。这是我的控制器:
public async Task<IActionResult> RegisteredNurseList(int? page, int? sortType, string sortOrder,
int? minAge, int? maxAge)
{
bool isAjax = HttpContext.Request.Headers["X-Requested-With"] == "XMLHttpRequest";
ViewBag.PageNumber = page ?? 1;
int pageSize = 2;
int skip = (ViewBag.PageNumber - 1) * pageSize;
ViewBag.MinAge = minAge ?? 18;
ViewBag.MaxAge = maxAge ?? 99;
ViewBag.SortType = sortType ?? 1;
ViewBag.SortOrder = sortOrder ?? "age";
var tuple = await _admin.GetNurses(skip, pageSize, sortOrder ?? "age", sortType ?? 1, minAge ?? 18, maxAge ?? 99);
int total = tuple.Item2;
var nurses = tuple.Item1;
var result = new StaticPagedList<NurseDetailsViewModel>(nurses, ViewBag.PageNumber, pageSize, total);
if (isAjax)
{
return (ActionResult)PartialView("PaginatedNurses", result);
}
return View(result);
}
public async Task RegisteredNurseList(int?page,int?sortType,string sortOrder,
int?minAge,int?maxAge)
{
bool isAjax=HttpContext.Request.Headers[“X-Request-With”]=“XMLHttpRequest”;
ViewBag.PageNumber=第1页;
int pageSize=2;
int skip=(ViewBag.PageNumber-1)*页面大小;
ViewBag.MinAge=MinAge±18;
ViewBag.MaxAge=MaxAge±99;
ViewBag.SortType=SortType±1;
ViewBag.SortOrder=SortOrder??“年龄”;
var tuple=await_admin.GetNurses(跳过、页面大小、排序规则??“年龄”、排序类型??1、最小值??18、最大值??99);
int total=tuple.Item2;
var=tuple.Item1;
var结果=新的静态页面列表(护士、ViewBag.PageNumber、页面大小、总数);
if(isAjax)
{
返回(ActionResult)PartialView(“PaginatedNurses”,result);
}
返回视图(结果);
}
在@steve perfect comment之后,我得到了他的想法,我改变了我的代码,如下所示,然后成功了:
<script>
function AjaxInit() {
window.$('#RegisteredNursePaginated').find('a[href]').on('click',
function (e) {
e.preventDefault();
var sortOrder = window.$("#sortOrder").val();
var sortType = window.$("#sortType").val();
var minAge = window.$("#minAge").val();
var maxAge = window.$("#maxAge").val();
var page = getQueryStringValue(this, 0).replace('page=', '');
// window.$("#pageGetter").val(page);
debugger;
console.log(this);
window.$.ajax({
url: "/admin/RegisteredNurseList/",
type: 'GET',
data: {
page: page,
SortOrder: sortOrder,
sortType: sortType,
MinAge: minAge,
MaxAge: maxAge
},
success: function (result) {
debugger;
window.$('#RegisteredNursePaginated').html(result);
}
});
return false;
});
}
</script>
<script>
window.$(document).ready(function () {
AjaxInit();
});
</script>
<script>
$(document).ajaxComplete(function () {
AjaxInit();
});
</script>
函数AjaxInit(){
window.$(“#RegisteredNursePaginated”).find('a[href')。on('click',
职能(e){
e、 预防默认值();
var sortOrder=window.$(“#sortOrder”).val();
var sortType=window.$(“#sortType”).val();
var minAge=window.$(“#minAge”).val();
var maxAge=window.$(“#maxAge”).val();
var page=getQueryStringValue(this,0).replace('page=','');
//window.$(“#pageGetter”).val(第页);
调试器;
console.log(this);
window.$.ajax({
url:“/admin/RegisteredNurseList/”,
键入:“GET”,
数据:{
第页:第页,
巫师:巫师,
sortType:sortType,
米纳奇:米纳奇,
MaxAge:MaxAge
},
成功:功能(结果){
调试器;
window.$('#RegisteredNursePaginated').html(结果);
}
});
返回false;
});
}
窗口。$(文档).ready(函数(){
AjaxInit();
});
$(文档).ajaxComplete(函数(){
AjaxInit();
});
onclick赋值似乎是在document.ready时间完成的,然后,当您重新加载部分时,该赋值将丢失。我建议创建一个函数并将其存储在外部js文件中。然后在document.ready和成功ajax后调用该函数execution@Steve太好了,我终于明白你的意思了,现在我的代码可以用了德,我会发布你的解决方案。
<script>
function AjaxInit() {
window.$('#RegisteredNursePaginated').find('a[href]').on('click',
function (e) {
e.preventDefault();
var sortOrder = window.$("#sortOrder").val();
var sortType = window.$("#sortType").val();
var minAge = window.$("#minAge").val();
var maxAge = window.$("#maxAge").val();
var page = getQueryStringValue(this, 0).replace('page=', '');
// window.$("#pageGetter").val(page);
debugger;
console.log(this);
window.$.ajax({
url: "/admin/RegisteredNurseList/",
type: 'GET',
data: {
page: page,
SortOrder: sortOrder,
sortType: sortType,
MinAge: minAge,
MaxAge: maxAge
},
success: function (result) {
debugger;
window.$('#RegisteredNursePaginated').html(result);
}
});
return false;
});
}
</script>
<script>
window.$(document).ready(function () {
AjaxInit();
});
</script>
<script>
$(document).ajaxComplete(function () {
AjaxInit();
});
</script>