Javascript JS:回调函数未执行
我遵循了表单提交的JS代码,我将表单提交保存在一个名为Javascript JS:回调函数未执行,javascript,jquery,callback,synchronous,Javascript,Jquery,Callback,Synchronous,我遵循了表单提交的JS代码,我将表单提交保存在一个名为submitForm的函数中,这样它就可以用于多个表单,只需将selector和action值传递到submitForm函数 function submitForm(selector, action, onComplete) { var response $(selector).submit(function (e) { e.preventDefault(); var data = $(this).serializeA
submitForm
的函数中,这样它就可以用于多个表单,只需将selector
和action
值传递到submitForm
函数
function submitForm(selector, action, onComplete) {
var response
$(selector).submit(function (e) {
e.preventDefault();
var data = $(this).serializeArray();
$.ajax({
type: 'POST',
url: action,
data: data,
dataType: 'json',
a
sync: false,
success: function (data) {
response = data;
}
});
});
return response;
}
submitForm(".lform", "user.php", function (response) { // Callback function
// Doing necessary stuff
});
在上面的代码中,回调函数没有执行,原因可能是什么?在回调函数中,有下面的代码
location.reload(); // To refresh the total DOM,
$(".c_form").dialog({
closeOnEscape: false,
title: title,
modal: true,
close: function () {
$(this).dialog('destroy').hide();
}
});
我想在页面重新加载完成后显示对话框,可以吗?您不能返回
响应。当时,它仍然是未定义的,因为AJAX还没有在它上面放置数据
回调函数是第三个参数onComplete
。AJAX成功后,执行它并传递它数据
:
success: function (data) {
onComplete(data);
}
您无法返回响应
。当时,它仍然是未定义的,因为AJAX还没有在它上面放置数据
回调函数是第三个参数onComplete
。AJAX成功后,执行它并传递它数据
:
success: function (data) {
onComplete(data);
}
我同意@Joseph the Dreamer并添加了错误回调,您的请求可能有错误,因为成功回调没有执行,所以添加它就像成功回调一样:
error: function () {
alert("ERROR!!");
}
另外,在代码中,您不能以这种方式显示对话框,您在调用reload方法后呈现对话框,这将创建一个新的DOM元素,其中上一页不能对新页执行任何操作(在重新加载之后),我的建议是发送一个查询字符串param,指示显示对话框,如domain.com/smth?show_dialog=1
,并在JS页面加载中检查此参数是否存在以显示对话框 我同意@Joseph the Dreamer的观点,也添加了错误回调,您的请求可能有错误,因为成功回调没有执行,所以添加它就像成功回调一样:
error: function () {
alert("ERROR!!");
}
另外,在代码中,您不能以这种方式显示对话框,您在调用reload方法后呈现对话框,这将创建一个新的DOM元素,其中上一页不能对新页执行任何操作(在重新加载之后),我的建议是发送一个查询字符串param,指示显示对话框,如domain.com/smth?show_dialog=1
,并在JS页面加载中检查此参数是否存在以显示对话框 var-response
不会被初始化,因为函数在AJAX请求完成其请求之前已经返回。var-response
不会被初始化,因为函数在AJAX请求完成其请求之前已经返回。我已经尝试了您建议它如何工作良好,预期页面的重新加载
,以及对话框
问题。是否有可能使这两种方法按预期工作?感谢重新加载回调的问题是,当您调用location.reload()时,页面会重新加载,并且之后的代码不会执行,因为页面正在重新加载。我已经尝试了您建议的工作方式,除了页面的重新加载
和对话框
问题之外。是否有可能使这两种方法按预期工作?感谢重新加载回调的问题是,当您调用location.reload()时,页面会重新加载,而后面的代码不会执行,因为页面已重新加载