“未捕获的 RangeError:在 Dt (jquery.min.js:2) 处超出了最大调用堆栈大小”
Posted
技术标签:
【中文标题】“未捕获的 RangeError:在 Dt (jquery.min.js:2) 处超出了最大调用堆栈大小”【英文标题】:"Uncaught RangeError: Maximum call stack size exceeded at Dt (jquery.min.js:2)" 【发布时间】:2021-11-27 20:54:56 【问题描述】:我是使用 django 编程的新手,现在我被困在这个阶段,我必须将数据从 js 变量移动到 Django 视图或其他东西。但目前,如果我尝试使用 ajax post 函数将数据从 js 传递到 Django,它会显示未捕获的范围错误。我不确定我在哪里犯了错误,但是如果有人可以帮助我,那将非常有帮助。真的确实有帮助PLS!!!
错误信息:
Uncaught RangeError: Maximum call stack size exceeded at Dt (jquery.min.js:2)
脚本代码
<script>
var URL = "% url 'textFromInputFile' %";
var textOfFile = document.getElementById('fileinput');
textOfFile.addEventListener('change', function()
var fr = new FileReader();
fr.onload = function()
document.getElementById("textarea").value = fr.result;
;
fr.readAsText(this.files[0]);
);
function getText()
$.ajax(
type: "POST",
url: "/textFromInputFile",
data: "textOfFile":textOfFile,
dataType: "String",
success: function(data)
alert("ok")
,
failure:function()
alert("failed")
,);
$('button').click(function()
getText();
);
</script>
views.py
def textFromInputFile(request):
if request.method == 'POST':
if 'textOfFile' in request.POST:
textOfFile = request.POST['textOfFile']
#need to do something here
return HttpResponse('success') #if everything is o.k
else:
return HttpResponse('failed!!')
urls.py
urlpatterns = [
path('', views.index, name='index'),
path('signin.html', views.signin, name='signin'),
path('index.html', views.index, name='index'),
path('home.html', views.home, name='home'),
path('logoutPage.html', views.logout, name='logout'),
path('home.html', views.textFromInputFile, name='textFromInputFile'),
]
【问题讨论】:
该错误意味着您的代码在某处导致了递归循环。问题中的逻辑似乎不是导致此问题的原因 【参考方案1】:该错误可能是由多次 Ajax 尝试序列化您的 JSON 引起的。所以我们最好在使用 JSON.stringify() 发送之前对其进行序列化 尝试改变你的ajax函数,数据如下:
data:JSON.stringify("textOfFile":textOfFile),
另一种方法就是将这个添加到ajax函数中:
$.ajax(
type: "POST", url: "/textFromInputFile",
data: "textOfFile":textOfFile,
dataType: "String",
success: function(data)
alert("ok")
,
failure:function()
alert("failed")
,
cache: false,
contentType: false,
processData: false,
,);
【讨论】:
现在可以使用了。谢谢以上是关于“未捕获的 RangeError:在 Dt (jquery.min.js:2) 处超出了最大调用堆栈大小”的主要内容,如果未能解决你的问题,请参考以下文章