发布表单时,在发送前使用jquery ajax对我不起作用

发布表单时,在发送前使用jquery ajax对我不起作用,jquery,Jquery,你知道为什么在点击事件中使用下面的代码之前发送对我不起作用吗?我猜是窗户的位置,但我怎么处理这个我不知道!? 非常感谢, "use strict"; (function ($, ns, w) { $(document).ready(function () { $.post(ns.validateField, { name: userName}) .done(function (data) { window.locat

你知道为什么在点击事件中使用下面的代码之前发送对我不起作用吗?我猜是窗户的位置,但我怎么处理这个我不知道!? 非常感谢,

"use strict";

(function ($, ns, w) {

    $(document).ready(function () {
        $.post(ns.validateField, { name: userName})
            .done(function (data) {
              window.location = ns.newUrl;  // Fires browser reload
            })
            .beforeSend(function() {
              console.log("!!NOT REACHED!!");
    }) 

})(window.jQuery, namespace('wp.checkout'), window);
更新

将.beforeSend(..)移动到.done事件上方时,firebug中出现错误,如下所示:

TypeError: $.post(...).beforeSend is not a function
.beforeSend(function() {
下文详细介绍了全部变更

在完成上述发送之前

$.post(ns.validateField, { name: userName})
        .beforeSend(function() {
            console.log("HERE");  // never reached
        })
        .done(function (data) {             
            window.location = ns.newUrl;
        })
        .always(function() {
            // this is not reached as well incidentally
        });
使用ajax:

$.ajax({
  url: "",
  data: { name: userName},
  beforeSend: function() {
    console.log("!!NOT REACHED!!")
  }
})

为了在发送前使用
方法,您应该使用方法,而不是
jQuery.post()
方法。 如果要执行post请求,可以在设置参数中将其指定为
类型:“post”
。您还应该在设置参数中定义“发送前<代码>事件”

 $.ajax({
    type:"POST",
    url:"**YOUR_POST_URL**",
    data: {name:userName}
    beforeSend: function (){
      console.log("**Whatever before send!**");
    }
  });

“不工作”是什么意思?你能提供更多关于ns的详细信息吗?当我在firebug中放置跟踪点时,beforeSend没有被命中。window.location会触发,但beforeSend永远不会触发?
beforeSend
不是承诺接口方法,而是ajax选项仅为了参数,您可以切换.beforeSend()和.done()进程吗?然后测试,看看结果是否不同?我从未见过beforeSend()作为链中的最后一个方法被调用。当我在完成之前移动beforeSend事件时,表单没有提交。这是否回答了OP的问题?