3

私の Windows ガジェット コードでは、SettingsClosing(event) で jQuery を使用して ajax (POST) 呼び出しを行いました。Fiddlerを介して ajax 呼び出しの実行を監視します。Ajax 呼び出しは目的の結果を返していますが、成功コールバック ajax をトリガーしていません。メイン ビューの OnPageLoad() イベントで同じコードを試してみましたが、正常に動作しています。私のコードは次のようなものです

function Login(username, password) {
    var url = "http://example.com/Auth.php";
    var data = { pusername: username, ppassword: password };
    jQuery.support.cors = true;
    $.ajax({
        type: "POST"
            , dataType: "json"
            , url: url, data: data
            , success: function (refresh_token) {
                System.Gadget.Settings.write("success", "true");
                System.Gadget.Settings.write("dd", refresh_token);
                var tok = refresh_token['refreshtoken'];
                var name = refresh_token['name'];
                System.Gadget.Settings.write("name", name);
                System.Gadget.Settings.write("refreshtoken", tok);

            }
                , error: function (XMLHttpRequest, textStatus, errorThrown) {
                    System.Gadget.Settings.write("login_error", errorThrown);
                    System.Gadget.Settings.write("login_STATUS", textStatus);
                }
    });
}

function SettingsClosing(event) 
{
    //use this question to now if setting was closed with OK button
    if (event.closeAction == event.Action.commit)
    {
        var username = $('#txtpUsername').val();
        var password = $('#txtpPassword').val();
        Login(username, password);

    }
}

どんな助けでも大歓迎です。

4

1 に答える 1

3

ajax 呼び出しは非同期であるため、操作が完了する前にコードを実行する機会がないように思われます。true に設定event.cancelしてから、ajax 呼び出しが完了した後に手動でクローズをトリガーすることができます。MSDN リファレンス: http://msdn.microsoft.com/en-us/library/windows/desktop/ms723677(v=vs.85).aspx

于 2012-09-18T14:41:23.570 に答える