You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript确认表单引入外部页面内容失败,变量未更新求排查

问题根源

这是因为$.get是异步AJAX请求——JavaScript不会等待这个请求拿到confirmaddress.html的内容,就直接往下执行创建对话框的代码了。当你执行.append(text)时,text=data这行代码还没被触发,所以text始终是初始的"Test"值。

修复方案

方案1:把对话框逻辑放到AJAX回调里

直接在请求成功的回调函数里创建对话框,确保拿到内容后再渲染:

function ConfirmDialog(message) {
  $.get("confirmaddress.html", function(data) {
    $('<div></div>').appendTo('body')
      .html('<div><h6>' + message + '?</h6></div>')
      .append(data)
      .dialog({
        modal: true,
        title: 'Address',
        zIndex: 10000,
        autoOpen: true,
        width: 'auto',
        resizable: false,
        buttons: {
          Yes: function() {
            $('body').append('<h1>Confirm Dialog Result: <i>Yes</i></h1>');
            $(this).dialog("close");
          },
          No: function() {
            $('body').append('<h1>Confirm Dialog Result: <i>No</i></h1>');
            $(this).dialog("close");
          }
        },
        close: function(event, ui) {
          $(this).remove();
        }
      });
  });
};

方案2:用async/await简化异步逻辑(ES6+)

如果你的环境支持ES6语法,可以用async/await让异步代码更直观:

async function ConfirmDialog(message) {
  const data = await $.get("confirmaddress.html");
  
  $('<div></div>').appendTo('body')
    .html('<div><h6>' + message + '?</h6></div>')
    .append(data)
    .dialog({
      modal: true,
      title: 'Address',
      zIndex: 10000,
      autoOpen: true,
      width: 'auto',
      resizable: false,
      buttons: {
        Yes: function() {
          $('body').append('<h1>Confirm Dialog Result: <i>Yes</i></h1>');
          $(this).dialog("close");
        },
        No: function() {
          $('body').append('<h1>Confirm Dialog Result: <i>No</i></h1>');
          $(this).dialog("close");
        }
      },
      close: function(event, ui) {
        $(this).remove();
      }
    });
};

备选方案:用jQuery的.load()方法

你注释掉的.load()其实是更简洁的方式,它会自动加载目标页面内容到元素中:

function ConfirmDialog(message) {
  $('<div></div>').appendTo('body')
    .html('<div><h6>' + message + '?</h6></div>')
    .load('confirmaddress.html')
    .dialog({
      modal: true,
      title: 'Address',
      zIndex: 10000,
      autoOpen: true,
      width: 'auto',
      resizable: false,
      buttons: {
        Yes: function() {
          $('body').append('<h1>Confirm Dialog Result: <i>Yes</i></h1>');
          $(this).dialog("close");
        },
        No: function() {
          $('body').append('<h1>Confirm Dialog Result: <i>No</i></h1>');
          $(this).dialog("close");
        }
      },
      close: function(event, ui) {
        $(this).remove();
      }
    });
};

内容的提问来源于stack exchange,提问作者Anton K

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 22:48:11