未捕获范围错误:超过最大调用堆栈大小。javascript
我需要一些帮助来找出这个错误的来源。根据控制台,它被抛出到jquery.min.js的这个函数中:未捕获范围错误:超过最大调用堆栈大小。javascript,javascript,jquery,twitter-bootstrap,Javascript,Jquery,Twitter Bootstrap,我需要一些帮助来找出这个错误的来源。根据控制台,它被抛出到jquery.min.js的这个函数中: function buildParams( prefix, obj, traditional, add ) { var name; if ( jQuery.isArray( obj ) ) { // Serialize array item. jQuery.each( obj, function( i, v ) { if ( traditional || rbr
function buildParams( prefix, obj, traditional, add ) {
var name;
if ( jQuery.isArray( obj ) ) {
// Serialize array item.
jQuery.each( obj, function( i, v ) {
if ( traditional || rbracket.test( prefix ) ) {
// Treat each array item as a scalar.
add( prefix, v );
} else {
// Item is non-scalar (array or object), encode its numeric index.
buildParams(
prefix + "[" + ( typeof v === "object" && v != null ? i : "" ) + "]",
v,
traditional,
add
);
}
} );
} else if ( !traditional && jQuery.type( obj ) === "object" ) {
// Serialize object item.
for ( name in obj ) {
buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add );
}
} else {
// Serialize scalar item.
add( prefix, obj );
}
}
我认为这是一个特别的循环:
// Serialize object item.
for ( name in obj ) {
buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add );
}
我使用的是从bootstrap网站上得到的一个稍微修改过的模板,但是我显然没有修改这个文件,我假设它应该可以开箱即用。提交以下表单时触发错误:
<form name="sentMessage" id="contactForm" novalidate>
....
</form>
....
这是由js控制的
$("#contactForm input,#contactForm textarea").jqBootstrapValidation({
preventSubmit: true,
submitError: function($form, event, errors) {
// additional error messages or events
},
submitSuccess: function($form, event) {
event.preventDefault(); // prevent default submit behaviour
// get values from FORM
var firstName = $("#fname").val();
var lastName = $("#lname").val();
var email = $("#email").val();
var cphone = $("#cphone").val();
var comment = $("#comment").val();
var address = $("#address").val();
var city = $("#city").val();
var zip = $("#zip").val();
$.ajax({
url: "iveTriedDifferentActionsHere",
type: "POST",
data: {
fname: fname,
lname: lname,
cphone: cphone,
email: email,
comment: comment,
address: address,
city: city,
zip: zip
},
cache: false,
success: function() {
// Success message
$('#success').html("<div class='alert alert-success'>");
$('#success > .alert-success').html("<button type='button' class='close' data-dismiss='alert' aria-hidden='true'>×")
.append("</button>");
$('#success > .alert-success')
.append("<strong>Your message has been sent. </strong>");
$('#success > .alert-success')
.append('</div>');
//clear all fields
$('#contactForm').trigger("reset");
},
error: function() {
// Fail message
$('#success').html("<div class='alert alert-danger'>");
$('#success > .alert-danger').html("<button type='button' class='close' data-dismiss='alert' aria-hidden='true'>×")
.append("</button>");
$('#success > .alert-danger').append("<strong>Sorry " + firstName + ", it seems that my mail server is not responding. Please try again later!");
$('#success > .alert-danger').append('</div>');
//clear all fields
$('#contactForm').trigger("reset");
},
});
},
filter: function() {
return $(this).is(":visible");
},
});
$(“#contactForm输入,#contactForm文本区域”).jqBootstrapValidation({
对,,
submitError:函数($form、event、errors){
//其他错误消息或事件
},
submitSuccess:函数($form,event){
event.preventDefault();//防止默认提交行为
//从表单中获取值
var firstName=$(“#fname”).val();
var lastName=$(“#lname”).val();
var email=$(“#email”).val();
var cphone=$(“#cphone”).val();
var comment=$(“#comment”).val();
var address=$(“#address”).val();
var city=$(“#city”).val();
var zip=$(“#zip”).val();
$.ajax({
url:“IveTriedDifferenceshere”,
类型:“POST”,
数据:{
fname:fname,
lname:lname,
cphone:cphone,
电邮:电邮,,
评论:评论,,
地址:地址:,
城市:城市,,
拉链:拉链
},
cache:false,
成功:函数(){
//成功信息
$('#success').html(“”);
$('#success>.alert success').html(“×;”)
.附加(“”);
$(“#success>.alert success”)
.append(“您的邮件已发送。”;
$(“#success>.alert success”)
.附加(“”);
//清除所有字段
$('#contactForm')。触发器(“重置”);
},
错误:函数(){
//失败消息
$('#success').html(“”);
$('#success>.alert danger').html(“×;”)
.附加(“”);
$(“#success>.alert danger”).append(“对不起”+firstName+”,我的邮件服务器似乎没有响应。请稍后再试!”);
$(“#success>.alert danger”).append(“”);
//清除所有字段
$('#contactForm')。触发器(“重置”);
},
});
},
过滤器:函数(){
return$(this).is(“:可见”);
},
});
我知道这是很多代码,但它是最基本的。我似乎不知道是什么引起的。我尝试了不同的行动,不同的投入,但我的想法已经没有了。提前感谢您的帮助。在哪里/如何调用
buildParams
?什么obj
传递给函数?此数据是否包含循环引用(在任何级别)?并且您可能希望添加完整的stacktraceThanks以查看此数据。我一直在挖掘,它看起来可能与一个node_模块有关。在遇到障碍之前,摆脱浏览器同步使其在编译过程中更进一步,但它看起来仍然是节点模块。