Two*_*eds 0 javascript ajax jqgrid
我正在使用 jqGrid,最新版本,当我应用自定义函数的编辑规则并执行 ajax 时,它总是返回“自定义函数应始终返回一个数组”。我认为这是一个时间问题,所以我将 ajax 设置为 false 但仍然存在问题。任何人都有一个自定义函数,可以执行正常工作的 ajax 调用。感谢任何帮助。谢谢你。
jQuery(softwareReportingGrid.gridId).jqGrid({
editurl: 'clientArray',
datatype: 'json',
colNames: ["Car"],
colModel: [
{"index":"Car","name":"Car","edittype":"text","editable":true,
"editrules":{"custom":true,"custom_func":validateCar,"required":true}}
....
Run Code Online (Sandbox Code Playgroud)
我有以下 javascript 函数,它被称为
validateCar: function (value, colname) {
jQuery.ajax({
async: false,
url: validateCarUrl,
data: { carName: value },
dataType: 'json',
contentType: 'application/json; charset=utf-8',
success: function (data) {
if (data) {
return [true, '']
} else {
return [false, value + ' is not a valid car'];
}
},
error: function () { alert('Error trying to validate car ' + value); }
});
}
Run Code Online (Sandbox Code Playgroud)
您validateCar()不会返回任何内容,因为 AJAX 是异步的。即使是这样,您也是从分配为success处理程序的函数中返回一些内容,而不是从外部validateCar()函数中返回。
当您的响应$.ajax到达时,该方法很久以前就返回了。您要么必须使用同步 AJAX(有点不鼓励):
validateCar: function (value, colname) {
var result = null;
jQuery.ajax({
async: false, //this is crucial
url: validateCarUrl,
data: { carName: value },
dataType: 'json',
contentType: 'application/json; charset=utf-8',
success: function (data) {
if (data) {
result = [true, '']
} else {
result = [false, value + ' is not a valid car'];
}
},
error: function () { alert('Error trying to validate car ' + value); }
});
return result;
}
Run Code Online (Sandbox Code Playgroud)
或重新设计您的功能。
| 归档时间: |
|
| 查看次数: |
6890 次 |
| 最近记录: |