Jtable "listaction" url 总是调用带有旧参数值的动作控制器 MVC4 Jquery
Jtable "listaction" url always calling action controller with old parameters value MVC4 Jquery
[HttpPost]
public JsonResult StudentList(int id= 0, int id2= 0)
{
try
{
//Get data from database
List<Student> students = _repository.StudentRepository.GetStudents(id,id2);
//Return result to jTable
return Json(new { Result = "OK", Records = students},JsonRequestBehaviour.AllowGet);
}
catch (Exception ex)
{
return Json(new { Result = "ERROR", Message = ex.Message },JsonRequestBehaviour.AllowGet);
}
}
我的jquery
$("#DDL_id").change(function(){
//fill dropdown2 "DDL_idd" by ajax via get json call
});
$("#DDL_idd").change(function(){
var id= $("#DDL_id").val();
var idd= $("#DDL_idd").val();
var url = '/admin/StudentList?id1=' +id + '&id2='+idd;
$('#General_InfoTableContainer').jtable({
title: 'General_Info List',
actions: {
listAction: url
},
fields: {
RID: {
key: true,
create: false,
edit: false,
list: true,
title: 'RID',
width: '5%'
},
Quote: {
title: 'Open Quote',
list: true,
width: '15%',
},
Customer_Name: {
list: true,
title: 'Customer',
width: '25%'
}
}
});
//Load student list from server
$('#General_InfoTableContainer').jtable('load');
});
});
我第一次在我的控制器中获得两个下拉菜单的正确 ID,但之后如果我从下拉菜单中更改我的选择,我的操作没有获得新值并且它总是以旧值执行 "StudentList(int id1= 0, int id2= 0)" id1并且 id2 具有旧值并且不再重置
我已经完成
$.ajaxSetup({ cache: false });
和
[Nocache]
关于控制器动作和其他解决方案。请帮助。
你的问题是一个变量范围/闭包。
当创建 jTable 选项对象并将其传递给 jTable 构造函数时,url 中的任何值都被固定为 listAction。
您似乎正在尝试执行 "filter" 操作
只需将 listAction 设置为 url
的静态部分
listAction: '/admin/StudentList',
然后当您填充 table
$('#General_InfoTableContainer').jtable('load',{
'id1':$("#DDL_id").val(),
'id2':$("#DDL_idd").val()});
[HttpPost]
public JsonResult StudentList(int id= 0, int id2= 0)
{
try
{
//Get data from database
List<Student> students = _repository.StudentRepository.GetStudents(id,id2);
//Return result to jTable
return Json(new { Result = "OK", Records = students},JsonRequestBehaviour.AllowGet);
}
catch (Exception ex)
{
return Json(new { Result = "ERROR", Message = ex.Message },JsonRequestBehaviour.AllowGet);
}
}
我的jquery
$("#DDL_id").change(function(){
//fill dropdown2 "DDL_idd" by ajax via get json call
});
$("#DDL_idd").change(function(){
var id= $("#DDL_id").val();
var idd= $("#DDL_idd").val();
var url = '/admin/StudentList?id1=' +id + '&id2='+idd;
$('#General_InfoTableContainer').jtable({
title: 'General_Info List',
actions: {
listAction: url
},
fields: {
RID: {
key: true,
create: false,
edit: false,
list: true,
title: 'RID',
width: '5%'
},
Quote: {
title: 'Open Quote',
list: true,
width: '15%',
},
Customer_Name: {
list: true,
title: 'Customer',
width: '25%'
}
}
});
//Load student list from server
$('#General_InfoTableContainer').jtable('load');
});
});
我第一次在我的控制器中获得两个下拉菜单的正确 ID,但之后如果我从下拉菜单中更改我的选择,我的操作没有获得新值并且它总是以旧值执行 "StudentList(int id1= 0, int id2= 0)" id1并且 id2 具有旧值并且不再重置 我已经完成
$.ajaxSetup({ cache: false });
和
[Nocache]
关于控制器动作和其他解决方案。请帮助。
你的问题是一个变量范围/闭包。
当创建 jTable 选项对象并将其传递给 jTable 构造函数时,url 中的任何值都被固定为 listAction。
您似乎正在尝试执行 "filter" 操作
只需将 listAction 设置为 url
的静态部分listAction: '/admin/StudentList',
然后当您填充 table
$('#General_InfoTableContainer').jtable('load',{
'id1':$("#DDL_id").val(),
'id2':$("#DDL_idd").val()});