Javascript Can';t执行事件ajaxStart()

Javascript Can';t执行事件ajaxStart(),javascript,jquery,html,ajax,Javascript,Jquery,Html,Ajax,当我使用ajax(使用jquery)调用php脚本时,我试图将按钮的状态更改为disabled。我发送数据库中的所有信息并获得返回,但无法执行ajaxStart。如何解决更改按钮状态的问题? 代码如下: HTML和JAVASCRIPT $(文档).ready(函数(){ //$(“#加载”).hide(); 变量名; 变量年龄; var post $(“.formulaire”).submit(函数(){ name=$(“#name”).val(); 年龄=$(“#年龄”).val(); po

当我使用ajax(使用jquery)调用php脚本时,我试图将按钮的状态更改为disabled。我发送数据库中的所有信息并获得返回,但无法执行ajaxStart。如何解决更改按钮状态的问题?
代码如下: HTML和JAVASCRIPT

$(文档).ready(函数(){
//$(“#加载”).hide();
变量名;
变量年龄;
var post
$(“.formulaire”).submit(函数(){
name=$(“#name”).val();
年龄=$(“#年龄”).val();
post=$(“#post”).val();
$.post('sequence.php'{
你的名字:名字,
年龄:年龄,,
职位:职位
},dats);
$(“#bouton”).ajaxStart(function(){//Nous ciblons l'lélément#加载qui est caché
$(“#bouton”).attr('disabled'、'disabled');
console.log(“**********”);
});
返回false;
功能dats(数据){
$(“#div1”).html(数据);
$(“#名称”).val(“”);
$(“#年龄”).val(“”);
$(“#post”).val(“”);
}
});
});

提交

以下是示例代码:

$(document).ready(function () {
    var name, age, post;
    $(".formulaire").submit(function (event) {
        event.preventDefault();

        name = $("#name").val();
        age = $("#age").val();
        post = $("#post").val();
        $("#bouton").attr('disabled','disabled');

        $.post('sequence.php',
            {
                u_name: name,
                age: age,
                post: post
            }, function (data) {
                $("#div1").html(data);
                $("#name").val("");
                $("#age").val("");
                $("#post").val("");
                $("#bouton").removeAttr('disabled');
            }
        );
    });
});

以下是示例代码:

$(document).ready(function () {
    var name, age, post;
    $(".formulaire").submit(function (event) {
        event.preventDefault();

        name = $("#name").val();
        age = $("#age").val();
        post = $("#post").val();
        $("#bouton").attr('disabled','disabled');

        $.post('sequence.php',
            {
                u_name: name,
                age: age,
                post: post
            }, function (data) {
                $("#div1").html(data);
                $("#name").val("");
                $("#age").val("");
                $("#post").val("");
                $("#bouton").removeAttr('disabled');
            }
        );
    });
});
的所有处理程序,包括使用
.ajaxStart()
方法添加的处理程序,都必须附加到文档

所以你应该这样做:

$(document).ajaxStart(function () {
     $("#bouton").attr('disabled','disabled');
});
如果您在代码的任何地方都执行
$.ajax
,那么
ajaxStart
将始终为所有
ajax
触发,这不是一个好主意

正如JQuery文档所说,
$.Post
是一个速记Ajax函数,相当于:

$.ajax({
  type: "POST",
  url: url,
  data: data,
  success: success,
  dataType: dataType
});
最好使用
$.ajax
而不是
$

$.ajax({
   beforeSend: function(){
    $("#bouton").attr('disabled','disabled');
   },
   complete: function(){
      //Completed        
   }
   // ......
 }).done(function() {
    $("#bouton").removeAttr('disabled');
  });
提供的测试代码:
$(文档).ready(函数(){
变量名称、年龄、职务;
$(“.formulaire”).submit(函数(){
console.clear();
name=$(“#name”).val();
年龄=$(“#年龄”).val();
post=$(“#post”).val();
$.post('sequence.php',
{
你的名字:名字,
年龄:年龄,,
职位:职位
},dats
);  
返回false;
功能dats(数据){
$(“#div1”).html(数据);
$(“#名称”).val(“”);
$(“#年龄”).val(“”);
$(“#post”).val(“”);
}
}); 
$(文档).ajaxStart(函数(){
$(“#bouton”).attr('disabled','disabled');
log('started…');
}).ajaxStop(函数(){
$(“#bouton”).removeAttr('disabled');
console.log('stoped…');
});
});

提交
的所有处理程序,包括使用
.ajaxStart()
方法添加的处理程序,都必须附加到文档中

所以你应该这样做:

$(document).ajaxStart(function () {
     $("#bouton").attr('disabled','disabled');
});
如果您在代码的任何地方都执行
$.ajax
,那么
ajaxStart
将始终为所有
ajax
触发,这不是一个好主意

正如JQuery文档所说,
$.Post
是一个速记Ajax函数,相当于:

$.ajax({
  type: "POST",
  url: url,
  data: data,
  success: success,
  dataType: dataType
});
最好使用
$.ajax
而不是
$

$.ajax({
   beforeSend: function(){
    $("#bouton").attr('disabled','disabled');
   },
   complete: function(){
      //Completed        
   }
   // ......
 }).done(function() {
    $("#bouton").removeAttr('disabled');
  });
提供的测试代码:
$(文档).ready(函数(){
变量名称、年龄、职务;
$(“.formulaire”).submit(函数(){
console.clear();
name=$(“#name”).val();
年龄=$(“#年龄”).val();
post=$(“#post”).val();
$.post('sequence.php',
{
你的名字:名字,
年龄:年龄,,
职位:职位
},dats
);  
返回false;
功能dats(数据){
$(“#div1”).html(数据);
$(“#名称”).val(“”);
$(“#年龄”).val(“”);
$(“#post”).val(“”);
}
}); 
$(文档).ajaxStart(函数(){
$(“#bouton”).attr('disabled','disabled');
log('started…');
}).ajaxStop(函数(){
$(“#bouton”).removeAttr('disabled');
console.log('stoped…');
});
});

提交

因此您正在收听ajaxStart事件的
#bouton
元素--尝试
$(document).ajaxStart($(“#bouton”).attr(disabled,“disabled”)处理程序是否未运行或未工作<代码>禁用
是一个属性,需要设置为
true
。另请参见@Snowmonkey,如果正确,
ajaxStart
必须附加到文档(参考:)
disabled
仍然是一个属性:)奇怪的是,就javascript而言,“disabled”是一个真正的值。任何不隐式为false的值都是真实的。但你绝对正确。我总是忘了哪一个正在被淘汰,attr还是prop。叹息…感谢@SnowmonkeySo您正在收听ajaxStart事件的
#bouton
元素--请尝试
$(文档).ajaxStart($(“#bouton”).attr(disabled,“disabled”)处理程序是否未运行或未工作<代码>禁用
是一个属性,需要设置为
true
。另请参见@Snowmonkey,如果正确,
ajaxStart
必须附加到文档(参考:)
disabled
仍然是一个属性:)奇怪的是,就javascript而言,“disabled”是一个真正的值。任何不隐式为false的值都是真实的。但你绝对正确。我总是忘了哪一个正在被淘汰,attr还是prop。叹气……谢谢@snowmonkey这种方法的问题是,成功回调发生在帖子返回之后——而ajaxStart()立即发生。例如,如果您想确保用户在ajax处理发生时不能单击按钮,那么监听ajaxStart()将是一个不错的选择。不过,这种方法的问题是,成功回调发生在post返回之后,而ajaxStart()会立即发生。如果您想确保用户在ajax进程运行时不能单击按钮