0

不明確なタイトルで申し訳ありませんが、私の問題に合うものは見つかりませんでした.それが何であるかをよりよく説明するために、私のjavascriptコードをお見せしましょう:

function askForIDForCommand()
{
  var content;
  $.post("Somepage.aspx", function (data)
  {
     content = $(data).find("#myDiv").html();
  });

  var myFunc = function () { }
  var buttons = [{ text: 'OK', click: myFunc}];
  ui_window("Hi", 630, content, buttons);
 }

ご覧のとおり、content という変数を宣言しています。次に、指定された div の html をそれに割り当てます。そして、それを ui_window 関数に送信します。これは、指定されたコンテンツで jquery ダイアログを表示するだけです。問題は、ダイアログでその html コンテンツを取得できないことです。Firebug で「content」の値を調べると、html コンテンツが含まれていることがわかります。私が必死になるのは、上記の関数を以下の関数に変更すると、html コンテンツがダイアログに表示されることです。

    function askForIDForCommand()
{
  var content;
  $.post("Somepage.aspx", function (data)
  {
     content = $(data).find("#myDiv").html();
     var myFunc = function () { }
     var buttons = [{ text: 'OK', click: myFunc}];
     ui_window("Hi", 630, content, buttons);
  });

 }

違いがわからない場合のために、 $.post() メソッド内に ui_window の呼び出しを入れただけです。そして、それは機能します。なぜですか?

必要な場合の html コンテンツは次のとおりです。

        <table>
        <tr>
            <td align="right">
                <label>
                    Enter the ID:</label>
            </td>
            <td>
                <input id="txtID" type="text" onkeydown="return onlyNumbers(event);" maxlength="8"/>
            </td>
        </tr>
    </table>
4

3 に答える 3

4

に電話する前に に割り当てていませ。その割り当ては無名関数内で発生するため、誰かがその関数を呼び出すまで(つまり、Somepage.aspx への投稿が完了するまで) 実行されません。contentui_window

対照的に、 Somepage への投稿を開始ui_window()するとすぐに呼び出しますが、その操作が完了するのを待たずに呼び出します。その時点で、完了関数はまだ呼び出されていないため、まだ含まれています。contentundefined

于 2012-10-29T10:17:31.347 に答える
2

問題は、サーバーからの応答を受信したときに内部関数が呼び出されることです。次に、最初のケースでは、これらの行が実行されたときに変数がまだ割り当てられておらず、2番目のケースでui_windowは、利用可能なデータで呼び出されることが確実です。

于 2012-10-29T10:22:54.320 に答える
1

問題はサーバーへのAJAX呼び出しです。最初のケースでは、リクエストを送信して、次のコマンド、つまりmyFuncなどに直接進みます。したがって、現時点ではコンテンツ変数は初期化されていません。

于 2012-10-29T10:19:32.617 に答える