【问题标题】:jQuery "Too much recursion" error only on one specific serverjQuery“递归过多”错误仅在一台特定服务器上
【发布时间】:2011-11-22 14:59:32
【问题描述】:

更新

我从缩小版的jQu​​ery库切换到开发者版,发现jQuery库中出现错误的部分,jQuery v1.5.1.js的第2467行。 p>

 if ( handle ) {
      handle.apply( elem, data );
 } 

但目前我无法追溯到它的确切起点。

结束更新

我遇到了一个我无法解决的问题。我有以下使用 jQuery 1.5.1 的代码块:

$('#agencyForm').submit(function(e){
    // form field validations
    var zipRegex = /^[0-9]{5}(-[0-9]{4})?$/;
    var agencyNameRegex = /^[a-zA-Z\-\ \'\.]+$/;
    var cityRegex = /^[^0-9]+$/;
    var errMsg = '';
    if($('#agency_nm').val().length == 0) {
        errMsg += 'Agency Name is missing.\n';
    } else if (!agencyNameRegex.test($('#agency_nm').val())) {
        errMsg += 'Agency Name can only contain letters, hyphens, periods, and apostrophes.\n';
    }
    if($('#agency_address1_tx').val().length == 0) {
        errMsg += 'Address 1 is missing.\n';
    }
    if($('#agency_city_nm').val().length == 0) {
        errMsg += 'City is missing.\n';
    } else if (!cityRegex.test($('#agency_city_nm').val())) {
        errMsg += 'City can only contain letters and punctuation.\n';
    }
    if($('#agency_state_nm').val().length == 0) {
        errMsg += 'State is missing.\n';
    }
    if($('#agency_postal_cd').val().length == 0) {
        errMsg += 'Zip Code is missing.\n';
    } else if (!zipRegex.test($('#agency_postal_cd').val())) {
        errMsg += 'Zip Code must be in the format of 99999 or 99999-9999.\n';
    }
    if(errMsg.length > 0) {
        alert('There were errors with your submission.\n\n' + errMsg);
        e.preventDefault();
    }
});

在几乎所有运行此功能的服务器和浏览器上,都没有问题。但是我们正在测试一些新的服务器来替换现有的集合,只有当验证通过时,这段代码才会抛出“递归过多”的错误。换句话说,什么都不应该发生。

这在多个层面上对我来说毫无意义。我已经检查并确保发生故障的服务器和工作正常的服务器上的代码库是相同的。没有区别。

谁能想出我只在特定服务器上出现错误的原因?

【问题讨论】:

  • 这可能是一个愚蠢的问题(我很抱歉),但服务器是指托管 JS 文件的服务器,而不是运行浏览器的客户端计算机,对吗?
  • 正确。这是一个网络服务器升级。相同的架构(Unix、Websphere、CF9.0.1)只是一个升级的盒子。

标签: jquery


【解决方案1】:

很难猜测会发生什么,而且您向我们展示的代码根本不会(或不应该递归)。我会查看Fiddler 中的流量,并将它工作时发生的情况与失败时发生的情况进行比较。可能会给你一些线索。

【讨论】:

    【解决方案2】:

    问题解决了。代码库并不完全相同。验证的旧版本,肯定会导致递归错误,以某种方式放在该服务器上。

    $('#agencyForm').submit(function(e){
        e.preventDefault();
        // form field validations
        var zipRegex = /^[0-9]{5}(-[0-9]{4})?$/;
        var agencyNameRegex = /^[a-zA-Z\-\ \'\.]+$/;
        var cityRegex = /^[^0-9]+$/;
        var errMsg = '';
        if($('#agency_nm').val().length == 0) {
            errMsg += 'Agency Name is missing.\n';
        } else if (!agencyNameRegex.test($('#agency_nm').val())) {
            errMsg += 'Agency Name can only contain letters, hyphens, periods, and apostrophes.\n';
        }
        if($('#agency_address1_tx').val().length == 0) {
            errMsg += 'Address 1 is missing.\n';
        }
        if($('#agency_city_nm').val().length == 0) {
            errMsg += 'City is missing.\n';
        } else if (!cityRegex.test($('#agency_city_nm').val())) {
            errMsg += 'City can only contain letters and punctuation.\n';
        }
        if($('#agency_state_nm').val().length == 0) {
            errMsg += 'State is missing.\n';
        }
        if($('#agency_postal_cd').val().length == 0) {
            errMsg += 'Zip Code is missing.\n';
        } else if (!zipRegex.test($('#agency_postal_cd').val())) {
            errMsg += 'Zip Code must be in the format of 99999 or 99999-9999.\n';
        }
        if(errMsg.length > 0) {
            alert('There were errors with your submission.\n\n' + errMsg);
        } else {
            $('#agencyForm').submit();
        }
    });
    

    感谢 Fiddler 的提示!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-03
      相关资源
      最近更新 更多