我已经按照JS代码提交表单,我在一个名为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();
}
});
我想在完成页面重载后显示对话框,是否可以?
答案 0 :(得分:2)
您无法返回response
。那时,它仍然是undefined
,因为AJAX还没有放置data
。
您的回调函数是第三个参数onComplete
。在AJAX成功后,执行它并传递它data
:
success: function (data) {
onComplete(data);
}
答案 1 :(得分:2)
我同意@Joseph the Dreamer并且还添加错误回调,你的请求可能有错误,因此成功回调没有执行,就像成功回调一样添加它:
error: function () {
alert("ERROR!!");
}
并且你的代码也不能以这种方式显示对话框,你在调用reload方法后渲染对话框,这会创建一个新的DOM元素,其中上一页不能对新页面做任何事情(重新加载后),我的建议是发送一个查询字符串param指示显示像domain.com/smth?show_dialog=1
这样的对话框,并在你的JS页面加载检查是否存在该param以显示该对话框。