Jquery - 搜索按钮总是获得与第一次点击事件相同的数据
Jquery - Search button always get same data to first click event
我想通过 ajax 调用从远程数据库获取数据。我的搜索条件是最短日期、最长日期、可选择的类型,并且我有一个搜索按钮。我的问题是;当我单击搜索按钮时,系统工作正常,但如果我更改搜索条件并再次单击搜索按钮,我将获得第一次点击的结果。这种情况怎么办?
非常感谢。
$('#openDialog').dialog({height:400, width:545, autoOpen:false});
$('#objectTypeSelected').selectable();
$('#searchBtnObjects').click(function (evt) {
searchBtnObjectsClick();
});
function searchBtnObjects() {
var types = [];
var begin = $("#minDate").val();
var end = $("#maxDate").val();
var selectedTypes = $(".ui-selected");
var typeString ="";
for (var i = 0; i < selectedTypes.length; i++) {
types[i] = $(".ui-selected")[i].id;
typeString=typeString+$(".ui-selected")[i].id+",";
}
if (objectsTable != null) {
var postData = {
ajaxRequest:document.helper.getPageName(),
directAjaxMode:true,
types:typeString,
begin:begin,
end:end}
objectsTable.jqGrid("setGridParam", {postData:postData});
objectsTable.trigger('reloadGrid');
}
else{
objectsTable = $('#objectList').jqGrid({
datatype:'json',
colModel:[
{name:"ID", label:messageDictionary["ID"], editable:false, formatter:cc_formatter, unformat:cc_unformatter, index:"ID"},
{name:"DATE", label:messageDictionary["DATE"], editable:false, formatter:'date', formatoptions:{srcformat:'d/m/Y H:i:s', newformat:'d/m/Y H:i:s'}, index:"DATE"}
],
mtype:'POST',
multiselect:true,
pager:'#objectsPager',
postData:{
ajaxRequest:document.helper.getPageName(),
directAjaxMode:true,
types:typeString,
begin:begin,
end:en},
url:'search/getObjects',
jsonReader:{ repeatitems:false, cell:"", id:"id", userdata:"jsonModel", root:"rows" },
ignoreCase:true,
height:80,
autowidth: true,
shrinkToFit:true,
sortname:'ID',
sortorder:"asc",
loadonce:true,
rowNum:30,
rowList:[30, 50, 100],
rownumbers:true,
viewrecords:true
}
);
}
}
您必须在获得如下搜索结果后立即清除字段。
$("form").trigger("reset");
参考:clearing-my-form-inputs-after-submission
你遇到的问题是jqGrid设置中的参数
loadonce: true
此设置在第一次创建网格后自动将数据类型设置为本地。
为了继续向服务器发出请求,您需要删除此设置或将其设置为 false
loadonce : false;
有关 jqGrid 参数的更多信息,您可以在我们的 new documentation here
中看到
我想通过 ajax 调用从远程数据库获取数据。我的搜索条件是最短日期、最长日期、可选择的类型,并且我有一个搜索按钮。我的问题是;当我单击搜索按钮时,系统工作正常,但如果我更改搜索条件并再次单击搜索按钮,我将获得第一次点击的结果。这种情况怎么办?
非常感谢。
$('#openDialog').dialog({height:400, width:545, autoOpen:false});
$('#objectTypeSelected').selectable();
$('#searchBtnObjects').click(function (evt) {
searchBtnObjectsClick();
});
function searchBtnObjects() {
var types = [];
var begin = $("#minDate").val();
var end = $("#maxDate").val();
var selectedTypes = $(".ui-selected");
var typeString ="";
for (var i = 0; i < selectedTypes.length; i++) {
types[i] = $(".ui-selected")[i].id;
typeString=typeString+$(".ui-selected")[i].id+",";
}
if (objectsTable != null) {
var postData = {
ajaxRequest:document.helper.getPageName(),
directAjaxMode:true,
types:typeString,
begin:begin,
end:end}
objectsTable.jqGrid("setGridParam", {postData:postData});
objectsTable.trigger('reloadGrid');
}
else{
objectsTable = $('#objectList').jqGrid({
datatype:'json',
colModel:[
{name:"ID", label:messageDictionary["ID"], editable:false, formatter:cc_formatter, unformat:cc_unformatter, index:"ID"},
{name:"DATE", label:messageDictionary["DATE"], editable:false, formatter:'date', formatoptions:{srcformat:'d/m/Y H:i:s', newformat:'d/m/Y H:i:s'}, index:"DATE"}
],
mtype:'POST',
multiselect:true,
pager:'#objectsPager',
postData:{
ajaxRequest:document.helper.getPageName(),
directAjaxMode:true,
types:typeString,
begin:begin,
end:en},
url:'search/getObjects',
jsonReader:{ repeatitems:false, cell:"", id:"id", userdata:"jsonModel", root:"rows" },
ignoreCase:true,
height:80,
autowidth: true,
shrinkToFit:true,
sortname:'ID',
sortorder:"asc",
loadonce:true,
rowNum:30,
rowList:[30, 50, 100],
rownumbers:true,
viewrecords:true
}
);
}
}
您必须在获得如下搜索结果后立即清除字段。
$("form").trigger("reset");
参考:clearing-my-form-inputs-after-submission
你遇到的问题是jqGrid设置中的参数
loadonce: true
此设置在第一次创建网格后自动将数据类型设置为本地。
为了继续向服务器发出请求,您需要删除此设置或将其设置为 false
loadonce : false;
有关 jqGrid 参数的更多信息,您可以在我们的 new documentation here
中看到