【问题标题】:jQuery ajaxForm "h is undefined" problemjQuery ajaxForm“h 未定义”问题
【发布时间】:2011-01-28 20:22:08
【问题描述】:

我有一个以 ajaxed 模态显示的表单,我用它来更新用户详细信息。当模态加载时,我调用一个 js 函数:

teamCreate: function() {
$j("#step1,form#createEditTeam").show();
$j("#step2").hide();
var options = {
 type: "get",
 dataType: 'json',
     beforeSubmit:  before,  // pre-submit callback 
     success:       success  // post-submit callback
  };
$j("form#createEditTeam").ajaxForm(options);

function before(formData, jqForm, options){ 
 var valid = $j("form#createEditTeam").valid();
 if (valid === true) {
  $j(".blockMsg").block({ message: $j('#panelLoader') });
      return true; // submit the form
 } else {
  $j("form#createEditTeam").validate();
  return false; // prevent form from submitting
 }
};

function success(data){
 if (data.status == "success") {
  $j(".blockMsg").unblock();
 } else {
  //
}
};

function error(xhr, ajaxOptions, thrownError){
alert("Error code: " + xhr.statusText);
 };
}

当我第一次提交表单时,这工作得很好,无论模式打开和关闭多少次。但是,如果我提交表单,然后再次打开模式并尝试再次提交表单,我会收到一个 js 错误:

h is undefined

【问题讨论】:

  • 我在您的代码中没有看到h...错误是否引用了文件和行号?
  • h 是 jQuery 库中设置的变量。 Firebug 报告的 jQuery 中导致问题的行是: (function(b){function s(c,a){var e=c==...etHack:4};var k=null,m=[] }})(jQuery);我假设 h 是 jQuery 分配的 DOM 对象,但我不知道为什么它没有被正确分配。

标签: javascript jquery ajax ajaxform


【解决方案1】:

为了更快地调试它,我强烈建议将 JQuery 库的缩小版换成完整版,然后再次运行您的代码。使用缩小版您很难找出问题的根源,但如果您运行完整版,您肯定会发现更容易调试。变量和函数名称会更有意义。

【讨论】:

  • 所以问题不在于 jQuery 本身,而在于我正在使用的 blockUi 插件。它会删除它在消息数组中使用的 DOM 元素,并且一旦它自己删除就不会将其放回原处,因此当他们找不到 DOM 元素时会触发 blockui 错误。哎呀。
猜你喜欢
  • 2010-12-03
  • 1970-01-01
  • 2011-07-10
  • 1970-01-01
  • 2013-03-14
  • 1970-01-01
  • 2015-08-21
  • 2014-11-12
  • 1970-01-01
相关资源
最近更新 更多