-3

次のコード スニペットがあります。実行されていないコードの前にコメントを入れました。

$(document).on('click', '#disable_url', function (e) {    
    e.preventDefault();

    var items = new Array();

    $("input:checked:not(#ckbCheckAll)").each(function() {
      items.push($(this).val());
    });

    var str = $("#user_filter").serialize();    
    var str = decodeURIComponent(str);

    var user_status = new Array();
    for (var i = 0; i < items.length; i++) {
      //user_status.push($("#"+items[i]).val());
      user_status.push($("#"+items[i]).val().replace(/'/g,''));
    }      

    $.ajax({
      type: "POST",
      url: "manage_users.php?op=disable_bulk_users&items="+items+"&options="+str+"&user_status="+user_status,
      dataType: 'json',  
      success: function(data) {
        var redirect_link = data.href;
        window.location.href = redirect_link;
      }          
    });
/*The below code is not getting executed. It is expected to be executed upon the success response from PHP file otherwise not*/
    for (var i = 0; i < items.length; i++) { alert("Nibble");
      var status = 'enable'; 
      id = items[i];
      $('#user_status_'+id).html('<img src="{/literal}{$control_img_url}{literal}disable.png" border="0" alt="Enable User" width="20" height="20" />');
      $('#user_status_'+id).attr('title','Enable User');
      $('#user_status_'+id).attr('onClick', "change_user_status('"+module_url+"', '"+op+"', '"+id+"', '"+status+"');return false;");
    }
/*The non calling code ends here*/ 
      })

リクエストから成功応答、ページのリダイレクトまですべて正常に機能していますが、PHP ファイルから成功応答を受け取ったときにコードを実行できません。成功の応答が受信されない場合、このコードは実行されません。この点で私を助けてもらえますか?前もって感謝します。

4

1 に答える 1

0

あなたはこの部分を持っています:

  success: function(data) {
    var redirect_link = data.href;
    window.location.href = redirect_link;
  } 

当然、これは成功callbackです。リクエストが完了し、ブラウザーが成功の応答を受け取ると、関数が実行されます。コールバック内で何か他のことを実行したい場合は、コードを関数に記述してください。

また、ブラウザをリダイレクトする場合、HTML が目に見えて変更されるとは思わないでください。リダイレクトは即座に行われるため、何も変更されません。setTimeout関数を使用してリダイレクトを遅らせます。

于 2013-10-13T13:06:14.397 に答える