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 查找“内容”的值时,我可以看到它包含 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);
  });

 }

如果您没有注意到差异,我只是将 ui_window 的调用放在 $.post() 方法中。它有效。为什么?

如果您需要,这里是 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

相比之下,您在ui_window()开始Somepage 发布帖子后立即调用,但无需等待该操作完成。那时你的完成函数还没有被调用,因此content仍然包含undefined.

于 2012-10-29T10:17:31.347 回答
2

问题是当您收到来自服务器的响应时会调用内部函数。然后在第一种情况下,执行这些行时尚未分配变量,而在第二种情况下,您确定ui_window使用可用数据调用该变量。

于 2012-10-29T10:22:54.320 回答
1

问题是对服务器的 AJAX 调用。在第一种情况下,您发送一个请求并直接执行下一个命令,即 myFunc 等。因此,此时您的内容变量尚未初始化。

于 2012-10-29T10:19:32.617 回答