0

Widget.jsという名前の.jsクラスがあります。widget.jsクラスで、JSスクリプト関数「GetErrors()」が定義されているerrors.ascxコントロールクラスを開始しています。これで、widgets.jsクラスからGetErrorsを呼び出すと、完全に正常に機能します。GetErrors()関数からの出力を使用して、widgets.jsにいくつかのコントロールを設定する必要があります。ただし、問題は、GetErrors()の実行に時間がかかり、コントロールがウィジェットクラスに渡される場合があることです。コントロールにはデータが含まれていません。

つまり、肝心なのは、JqueryのOnSuccess関数の正確な使用法を知る必要があるということです。

これは私のerrors.ascxコードです

var WidgetInstance = function () {
        this.GetErrors = function () {
                       $.ajax({
                url: '/Management/GetLoggedOnUsersByMinutes/',
                type: 'GET',
                cache: false,
                success: function (result) {
                    result = (typeof (result) == "object") ? result : $.parseJSON(result);
                    loggedOnUsers = result;
                }
            });
        },.....

Widgets.jsファイルのコードは次のとおりです。

function CreateWidgetInstance() {
    widgetInstance = new WidgetInstance();
    widgetInstance.GetErrors();
    }

今私はコントロールがから移動する必要があります

widgetInstance.GetErrors();

結果が出たときだけ。

ヘルプ???

4

3 に答える 3

2

jQueryDeferredsを使用できます。$ .ajax()は実際にpromiseを返します。したがって、次のことができます。

var WidgetInstance = function () {
    this.GetErrors = function () {
                   return $.ajax({
                            url: '/Management/GetLoggedOnUsersByMinutes/',
                            type: 'GET',
                            cache: false
                   });
    },.....

次に、次のように結果を処理できます...

widgetInstance.GetErrors().done(function(result){
    //process the resulting data from the request here
});
于 2012-12-11T07:54:28.890 に答える
0

こんにちはasync:falseAJAX呼び出しで使用するだけです。応答がクライアント側に到達するまで制御をブロックします...

var WidgetInstance = function () {
        this.GetErrors = function () {
                       $.ajax({
                url: '/Management/GetLoggedOnUsersByMinutes/',
                type: 'GET',
                cache: false,
                async: false,
                success: function (result) {
                    result = (typeof (result) == "object") ? result : $.parseJSON(result);
                    loggedOnUsers = result;
                }
            });
        },.....
于 2012-12-11T07:56:58.637 に答える
0

これに対して簡単な解決策を実行しました。コントロールのGetErrors()のonSuccessイベントで入力関数を呼び出すだけで、すべてが完全に機能しました。

于 2013-01-14T07:56:06.170 に答える