【发布时间】:2019-06-20 17:08:01
【问题描述】:
我有一个名为 getData 的函数,它发出一个 ajax 请求。我想在我的表单提交中使用这个 ajax 请求结果进行验证以及其他验证。 由于 ajax 是异步的,因此我在成功函数中调用回调函数。
现在我想将回调函数值分配给 javascript 变量以进行表单验证。 我尝试过使用 jquery 验证提交处理程序方法,但这也不起作用。 我的回调函数正在返回所需的输出,但是当我尝试 console.log 分配给它的变量时,它返回 undefined
这是我的代码
function getData(cb){
$.ajax({
url:'/stops/reason_valid',
method: 'get',
dataType: "json",
success: function(data) {
if(data.reason == '6'){
if(($('.search_of_item1').is(':checked')) || ($('.search_of_item2').is(':checked'))){
$(".searchValidError").hide();
cb(false);
}
else{
$(".searchValidError").show();
cb(true);
}
}
}
})
}
$(".actionstaken_submit").click(function(e){
var validationFailed = false;
var searchValidation = getData(function(cb){
alert(cb);
return cb;
});
console.log(searchValidation);
if($('.no_validation').is(":checked")){
if($('.action_validation:checked').length > 1){
$('.noneError').show();
validationFailed = true;
}
else{
$('.noneError').hide();
validationFailed = validationFailed || false;
}
}
if (validationFailed || searchValidation) {
e.preventDefault();
return false;
}
});
注意:如果我这样做 alert(cb) 显示的值是适当的,但 console.log(searchValidation) 返回未定义
【问题讨论】:
-
getData()不返回任何内容 -
你忘记关闭撇号:url:'/stops/reason_valid,
-
我更新了我的问题,问题是我的 ajax 工作正常,因为在我的警报中我根据条件将 cb 值设置为 true 或 false,我只能将 cb 值分配给 @ 987654325@ 变量,知道我该怎么做吗? @安纳苏
-
我尝试从我的 getdata 函数返回 cb 但这对@Taplar 也没有帮助
-
getData()调用 ajax 方法。您正在尝试将异步逻辑视为同步逻辑。它不适用于退货
标签: javascript jquery ajax callback