ajax beforeSend 不会根据流执行

ajax beforeSend doesn't execute according to flow

本文关键字:执行 beforeSend ajax      更新时间:2023-09-29
$('.item').click(function(){
myFunc();
});
function myFunc(){
$.ajax({
success: function (data) { //call API },
beforeSend: function() {  $('.loading').css({'display':'block!important'}); },
complete: function () { $('.loading').css({'display':'none !important'});},
})
}

我在beforeSend中的代码不起作用,成功是第一位的。这很奇怪,应该先beforeSend执行。我尝试在显示我的加载之前放置一个alert(),加载确实出现了。这是怎么回事?

function myFunc{
    $.ajax({
        url: "http://abcd.com",
        beforeSend: function(){
            $('.loading').css({'display':'block!important'});
        }
    })
    .done(function(data){
        //Call API
        $('.loading').css({'display':'none !important'});
    })
}

您正在注释掉},

success: function (data) { //call API },
//                                    ^ this is commented out

beforeSend: function() {  $('.loading').css({'display':'block!important'})
//                                     You need a space here ^

杰森 请更新您的脚本

 $('.item').click(function(){
    myFunc();
    });
    function myFunc(){
    $.ajax({
    success: function (data) { 
   //call API 
   },
    beforeSend: function() {  $('.loading').css({'display':'block!important'});
alert("Before Send Function Call");
 },
    complete: function () { $('.loading').css({'display':'none !important'});},
    })
    }

我的想法是,在 Ajax 调用之前使加载div 可见。再次使其在成功块中不可见。下面的示例代码。希望它能解决您的问题。

$('.item').click(function(){
    myFunc();
    });
    function myFunc(){
    // before calling ajax make it visible
    $('.loading').css({'display':'block!important'});
    $.ajax({
        type: "POST",
        url:"http://example.com/api/responce.php",
        data:{"u_email":email,"u_pwd":pass},
    }).success(function(res){
      // make it invisible
      $('.loading').css({'display':'none!important'});
      //do whatever with the responce from api
    }).error(function()(
      //handle ajax error if any
    ));