"Uncaught RangeError: Превышен максимальный размер стека вызовов в Dt (jquery.min.js:2)"
Я новичок в программировании с django и сейчас я застрял на этом этапе, где мне нужно переместить данные из js переменной в Django представление или что-то в этом роде. Но на данный момент, если я пытаюсь передать данные из js в Django с помощью функции ajax post, он говорит об ошибке не пойманного диапазона. Я не уверен, где я делаю ошибку, но было бы очень полезно, если бы кто-нибудь мог мне помочь. Действительно очень нужна помощь!!!
Сообщение об ошибке:
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'),
]
Ошибка может быть вызвана несколькими попытками 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,
},);