Asma Gheisari
Asma Gheisari

Reputation: 6294

POST doesn't happen in ajax

I have a simple form to submit and test ajax,but it doesn't work and I see any problem in it,I searched alot and there was no more poin-at least I dedn't see ;)

in urls.py

(r'^doctors/shahsavand/visiting/$','DrHub.views.visiting'),
(r'^doctors/shahsavand/visiting/add/$','DrHub.views.ajxTest')

the first URL is to direct to main page and there's this form in main page:

<form method='POST' action=".">
        {% csrf_token %}
        <ul>
            <li>
                <label for="start">Start Time: </label><input name="id_startTime" id="id_startTime" type="text" />          
            </li>
            <li>
                <label for="end">End Time: </label><input name="id_endTime" id="id_endTime" type="text" />
            </li>
        </ul>
        <input type="submit" id="save_button" name="save_button" value="add" />
</form>

and ajax code in this page:

<script type='text/javascript' src='/static/DrHub/doctors/shahsavand/js/jquery-1.4.1.js'></script>
<script type="text/javascript">
    $.ajax({
                 type:"POST",
                 url:"{% url DrHub.views.ajxTest %}",
                 data: {
                        'start': $('#id_startTime').val(),
                        'end': $('#id_endTime').val(),
                        'csrfmiddlewaretoken':$( "#csrfmiddlewaretoken" ).val()
                 },
                 success: function(data){
                     alert(data);
                 }
    });
</script>

in views.py :

def ajxTest(request):
    if request.is_ajax():
          if request.method == 'POST':
             return HttpResponse(simplejson.dumps({'message' : 'awesome'}),  mimetype='application/javascript')
    else:
          return render_to_response('DrHub/doctors/nutrition/test.html', context_instance=RequestContext(request))

I did this to test if ajxTest view is called:

def ajxTest(request):
   if request.is_ajax():
      raise Http404
   else:
      pass

and this :

def ajxTest(request):
       if request.is_ajax():
          raise pass
       else:
          Http404

but no result and that sounds like my ajax POST is not associated with ajxTest view !!!

edit

when I check firebug I get 403 forbidden error that is for CSRF and I've tryed many things to solve it again no result :(

Upvotes: 0

Views: 130

Answers (1)

Burhan Khalid
Burhan Khalid

Reputation: 174758

Add the javascript described in the documentation for csrf and it should fix your problem.

Upvotes: 2

Related Questions