0

データを送信する必要があるボタンを無効にするために Ajax 投稿を取得する際に問題が発生しています。以下は私のコードです。見回したところ、すべてが正しいように見えますが、ボタンを無効にすることはできません。使用しようとしました$("#refreshButton").attr("disabled", true);$("#refreshButton").removeAttr("disabled");、どちらも機能しませんでした。

$(document).ready(function () {
    $.ajax({
        type: "POST",
        async: false,
        beforeSend: function (request) {
            $("#refreshButton").attr("disabled", true); 
            request.setRequestHeader("AUTHORIZATION", authorizationToken);
        },
        url: url,
        dataType: "xml",
        success: function (xml) {
            //Do Something here
        });
        },
        error: function (x, status, error) {
            //errors                
        }
    });
})
$("#refreshButton").removeAttr("disabled");

これは私のボタンです:

<input id="refreshButton" type="button" onclick="RefreshDataSubmit();" value="Refresh"/>

誰でも提供できるヘルプをありがとう。

4

2 に答える 2

4

ajax 呼び出しが完了したら、ボタンを有効にする必要がありますalways。async false を使用してはならないため、ハンドラーでこれを行います。これにより、ajax 呼び出しの結果に関係なく、常にボタンが有効になります (failまたは完了)。
現在の問題は、DOM Ready 関数の外でボタンを有効にしているため、セレクターが要素を見つけられないか、ドキュメントの準備が非同期であるため、ajax 呼び出しの前に実行されることです。

$(document).ready(function () {
    $.ajax({
        type: "POST",
        beforeSend: function (request) {
            $("#refreshButton").prop("disabled", true); 
            request.setRequestHeader("AUTHORIZATION", authorizationToken);
        },
        url: url,
        dataType: "xml"
    }).done(function (xml) {
         //Do Something here
    }).fail(function (x, status, error) {
         //errors                
    }).always(function() {
         $("#refreshButton").removeProp("disabled");
    });
});
于 2013-06-24T12:01:16.943 に答える
1
$(document).ready(function () {
    $.ajax({
        type: "POST",
        beforeSend: function (request) {
            $("#refreshButton").prop("disabled", true);
            request.setRequestHeader("AUTHORIZATION", authorizationToken);
        },
        url: url,
        dataType: "xml",
        success: function (xml) {                
            //Do Something here
        },
        complete:function(){$("#refreshButton").prop("disabled", false);},
        error: function (x, status, error) {
          //errors                
        }...
于 2013-06-24T12:01:04.870 に答える