1

簡単なことにこだわった。combonewsajaxリクエストを行うと、変数に代入するのに十分な時間がないためです。

jQuery.ajax({
            type: "POST",
            url: "People.aspx/LoadComboNews",
            data: "{\"id\":" + usrid + "}",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (msg) {
                // Replace the div's content with the page method's return.
                combonews = '';
                setTimeout(function () { combonews = eval(msg.d); }, 500);
                //combonews = eval(msg.d);

            }
    });

示されているようにsetTimeoutを追加しようとしましたが、それでもアラートを出したいときはcombonews 空です。警告msg.dすると、常にデータの準備ができています。実行する時間を延長する方法はありcombonews = eval(msg.d);ますか?

アップデート:

ボタンクリックイベントにバインドして実行すると、割り当ては正常に機能します

---------------------------------------

UPDATE2

function lcombo() {
    jQuery('#combostart ~ option').remove();
    //setTimeout((function () {
        jQuery.ajax({
            type: "POST",
            url: "People.aspx/LoadComboNews",
            data: "{\"id\":" + usrid + "}",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            complete: function (msg) {
                // Replace the div's content with the page method's return.
                combonews = '';
                //setTimeout(function () { combonews = eval(msg.d); }, 500);
                combonews = JSON.parse(msg.d);

            }
        });
        //combonews = eval(combonews);
        //alert(combonews);
        jQuery(".chzn-select").chosen();
        jQuery(".chzn-select-deselect").chosen({ allow_single_deselect: true });
        var str = "";
        if (combonews.length > 0)
            for (var i in combonews) {
                str += "<option value='" + combonews[i][0] + "'>" + combonews[i][1] + "</option>";
            }
        jQuery("#combooptions").append(str);
        jQuery("#combooptions").val(draftid);
        jQuery("#combooptions").trigger("liszt:updated"); 
}

次に、lcombo()関数をロードします。これはクリックで機能しますが、他の結果には影響しません(つまり、メッセージをコンボにロードしません)

ありがとうございます

4

1 に答える 1

1

@アダムそれは私が見つけた唯一の解決策でした、そして私は答えとしてあなたのコメントをしています

簡単にするために、ajaxリクエストの後にすべてのコードを取得し、すべてを完全な関数内にドロップします。ajaxリクエストが完了する前に、変数「combonews」を使用して何かを行おうとしていました。–アダム

completeしかし、私が使用する代わりにsuccess

みんなありがとう

于 2013-03-09T18:29:47.950 に答える