0

我遵循 JS 代码进行表单提交,我将表单提交保存在一个名为 的函数中submitForm,这样它就可以用于多个表单,只需将selectoraction传递给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();
  }
});

我想在页面重新加载完成后显示对话框,可以吗?

4

2 回答 2

2

我同意 @Joseph the Dreamer 并添加错误回调,您的请求可能有错误,因为成功回调没有执行,所以添加它就像成功回调一样:

error: function () {
  alert("ERROR!!");
}

而且您的代码也无法以这种方式显示对话框,您在调用 reload 方法后渲染对话框,这会创建一个新的 DOM 元素,其中前一页对新页面无能为力(重新加载后),我的建议是发送一个查询字符串参数表示显示对话框,domain.com/smth?show_dialog=1并在页面加载时在您的 JS 中检查此参数是否存在以显示对话框。

于 2013-04-13T06:36:20.930 回答
2

不能回来response。那个时候还是undefined因为AJAX还没有放data上去。

您的回调函数是第三个参数onComplete。在 AJAX 成功后,执行它并传递它data

success: function (data) {
  onComplete(data);
}
于 2013-04-13T06:26:07.030 回答