Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/438.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JS:回调函数未执行_Javascript_Jquery_Callback_Synchronous - Fatal编程技术网

Javascript 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

我遵循了表单提交的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();
  }
});

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

您不能返回
响应
。当时,它仍然是未定义的,因为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()时,页面会重新加载,而后面的代码不会执行,因为页面已重新加载