Soy nuevo en la programación con django y ahora estoy atascado en esta etapa, donde tengo que mover datos de la variable js a la vista de Django o algo así. Pero en este momento, si trato de pasar los datos de js a Django usando la función de publicación de ajax, dice error de rango no detectado. No estoy seguro de dónde estoy cometiendo el error, pero sería muy útil si alguien me puede ayudar. Realmente de ayuda PLS!!!
Mensaje de error:
Uncaught RangeError: Maximum call stack size exceeded at Dt (jquery.min.js:2)Código de secuencia de comandos
<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>vistas.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 ok 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'),]
El error puede deberse a varios intentos de Ajax de serializar su JSON. Así que es mejor que lo serialicemos antes de enviarlo usando JSON.stringify () Intente cambiar su función ajax, los datos son como este:
data:JSON.stringify({"textOfFile":textOfFile}),La otra forma es agregar esto a la función 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, },);