0

イベントでサーバー側コードから値を取得し、それを使用してダイアログボックスを作成する必要があるという要件があります.window.onloadで値を取得しようとしましたが、window.onloadがドキュメントの後に呼び出されることがわかりました.準備ができている関数ですが、document.ready関数でその値が必要でした..

私の懸念は、ajax呼び出しを実行してサーバー側から値を取得し、document.ready関数で手動イベントを実行せずにそれを使用できる方法があるということです..

これが私のwindow.onloadコードです..

$(window).load(function() {
        $.ajax({
            type: 'GET',
            url: 'Sites',
            dataType: "text",
            success: function(data) {

                var values = [];
                values = data;

                values=values.replace('[','');
                values=values.replace(']','');

                var array = values.split(",");

                for (var i in array){

                    output =output.concat('<input type="checkbox"   id="'+array[i]+'" name="'+array[i]+'" value="'+array[i]+'" />'+array[i]+'<br />');

                }

                console.log(output);
                alert(output);

            }
        });
    });

これが私の document.ready 関数コードです。

$(document).ready(function() {
        //var windowWidth = (document.documentElement.clientWidth - 100) /0.9;
        var chbx="";
        chbx=output.toString();
        alert(chbx);
        var $dialog = $('<div></div>').html("<form id='myform'>" +output + "</form>")
        .dialog({
            autoOpen: false,
            title: 'Select Sites',
            buttons: {
                "Submit": function() {  $('form#myform').submit();},
                "Cancel": function() {$(this).dialog("close");}
            }
        });

ここで、window.loadから取得する必要がある変数出力i document.raedy関数にアクセスしようとしています..しかし、問題が述べたように、常に空になっています

みんな私を助けてください..私はこの分野では非常に初心者です。前もって感謝します//

4

2 に答える 2

1

ダイアログ コードの直前に ajax 呼び出しコードを配置し、オプションを追加しasync:false$.ajax、サーバーからの応答を受信するまで待機するようにしました。したがって、以下のコードを試してください:

$(document).ready(function() {
    //call the ajax first
    $.ajax({
            type: 'GET',
            url: 'Sites',
            dataType: "text",
            async:false,//wait till the data is received from the server
            success: function(data) {

                var values = [];
                values = data;

                values=values.replace('[','');
                values=values.replace(']','');

                var array = values.split(",");

                for (var i in array){

                    output =output.concat('<input type="checkbox"   id="'+array[i]+'" name="'+array[i]+'" value="'+array[i]+'" />'+array[i]+'<br />');

                }

                console.log(output);
                alert(output);

            }
        });

        ///then here comes you code for dialog

        var chbx="";
        chbx=output.toString();
        alert(chbx);
        var $dialog = $('<div></div>').html("<form id='myform'>" +output + "</form>")
        .dialog({
            autoOpen: false,
            title: 'Select Sites',
            buttons: {
                "Submit": function() {  $('form#myform').submit();},
                "Cancel": function() {$(this).dialog("close");}
            }
        });
});
于 2013-10-30T12:29:27.797 に答える