Search code examples
javascriptjquerydjangoajaxajaxform

Uncaught RangeError: Maximum call stack size exceeded at buildParams


I can't find where is mistake. please help

When I submit form I get below error in console

 Uncaught RangeError: Maximum call stack size exceeded     at buildParams

I saw different answers but they didn't help me to find error

Jquery

<script type="text/javascript">
    var frm = $('#message-form');
    frm.on('submit',function(e){
            e.preventDefault();
            $.ajax({
                type: frm.attr("method"),
                url: "message/message_form/",
                dataType: 'json', 
                data: { csrfmiddlewaretoken: "{{ csrf_token }}", frm:frm},
            })
            .done(function(response){
             console.log(response.message)
            });
        });
</script>

HTML

<div class="fixed-bottom">
    <form id="message-form"  user_id="{{u.id}}" method="POST">
        <input type="hidden" id="user_id" name="user_id" value="{{u.id}}">
        {% csrf_token %}
        <div class="container">
            <div class="row">
                <div id="text" class="col-10">
                    {{ msgform.text }}
                </div>

                <div class="col-1">
                    <button id="submit" class="btn"  type="submit"><img height="30px" src="/static/img/send-button.png" alt="send"></button>
                </div>
            </div>
        </div><br>
    </form>  
</div>

Thanx in advanced


Solution

  • the problem in sending data.

    When I use JSON.stringify to post data and accept in views as json.loads(request.POST.get('frm')) everything works fine

    $('#messageform').on('submit', function(e) {
      e.preventDefault();
      var frm = {
        'user_id': $('#user_id').attr('value'),
        'text': $('#form_message').val()
      };
      frm = JSON.stringify(frm);
      
      $.ajax({
        type: 'POST',
        url: "message/message_form/",
        dataType: 'json',
        data: {
          csrfmiddlewaretoken: "{{ csrf_token }}",
          'frm': frm
        },
      })
    });
    

    views.py

    def post(self, request):
            dictionary = json.loads(request.POST.get('frm'))
            print('=================',dictionary)
            u = get_object_or_404(User,pk=dictionary['user_id'])
            msg = message.objects.filter(sender=request.user).filter(receiver=u).all() | message.objects.filter(sender=u).filter(receiver=request.user).all()
            u = message.objects.create(sender=request.user,receiver=u,text=dictionary['text'])
            #if request.user != u and u.objects.filter(receiver__sender=request.user,receiver__receiver=u,receiver__read=False).exists :
            #    notify.send(request.user, recipient=u, verb="message you please read in message box",public=False)
            # msg = message.objects.filter(sender=request.user).filter(receiver=u).all() | message.objects.filter(sender=u).filter(receiver=request.user).all() 
            msg = dictionary['text']
            data = { "message":msg}
            return HttpResponse(json.dumps(data), content_type='application/json')