gpt4 book ai didi

javascript - 使用Ajax的jqGrid自定义编辑规则功能显示 "Custom Function should return array!"

转载 作者:行者123 更新时间:2023-11-28 16:21:22 24 4
gpt4 key购买 nike

我使用的是最新版本的 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}}
....

我有以下 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); }
});
}

最佳答案

您的 validateCar() 不会返回任何内容,因为 AJAX 是异步的。即使是这样,您也会从分配为成功处理程序的函数返回一些内容,而不是从外部的 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;
}

或者重新设计你的函数。

关于javascript - 使用Ajax的jqGrid自定义编辑规则功能显示 "Custom Function should return array!",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9489909/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com