2014-09-17 2 views
0

help пошлите ajax-запрос.как отправить просто ajax-запрос?

HTML:

<p><a id="test">Hello</a></p> 

JS:

$(function() { 
    $("#test").click(function() { 
    $.ajax({ 
     url: "/xhr_test/", 
     type: 'POST', 
     dataType:"html", 
     data: { 
      "phone": 1, 
      "skype": 2, 
      "other": 3, 
     }, 
     error: function() { 
      alert('Ошибка получения запроса'); 
     }, 
     success: function(data) { 
      alert('ajax worked' + data); 
     } 
    }); 
    }); 
}); 

urls.py:

url(r'^xhr_test/$', 'views.xhr_test', name='xhr_test'), 

views.py:

def xhr_test(request): 
    if request.is_ajax(): 
     message = "Hello AJAX!" 
    else: 
     message = "Hello" 
    return HttpResponse(message)  

Я пытаюсь проверить данные перед отправкой почты с помощью js:

проблема в том, что после отправки формы я получаю сообщение «error mes». в то же время в браузер консоли вывода: POST HTTP: // локальный: 8000/xhr_test/403 (ЗАПРЕЩЕНО)

пожалуйста, помогите исправить код

ответ

1

Вам необходимо отправить CSRF фишку, а в запросе.

С вашего взгляда передайте токен csrf в шаблон, который сгенерирует вашу веб-страницу, затем передайте этот токен csrf с помощью вашего вызова ajax, чтобы django распознал вас как действительное соединение.

Javascript

$(function() { 
    $("#test").click(function() { 
    $.ajax({ 
     url: "/xhr_test", 
     type: 'POST', 
     dataType:"json", 
     data: { 
      "phone": 1, 
      "skype": 2, 
      "other": 3, 
      "csrfmiddlewaretoken": '{{ csrf_token }}' 
     }, 
     error: function() { 
      alert('Ошибка получения запроса'); 
     }, 
     success: function(data) { 
      alert('ajax worked' + data); 
     } 
    }); 
    }); 
}); 

шаблон HTML

{% csrf_token %} 
<p><a id="test">Hello</a></p> 

views.py

def xhr_test(request): 
    if request.is_ajax(): 
     phone = request.POST['phone'] 
    data_to_send = {} 
    data_to_send.update({'data':phone}) 
    return HttpResponse(simplejson.dumps(data_to_send),content_type="application/json") 
+0

спасибо. , но в случае формы я отправил: csrfmiddlewaretoken: $ ('# myForm input [name = csrfmiddlewaretoken]'). Val(), , но мой вопрос сейчас не форма. поэтому неясно, какое значение содержится в {{csrf_token}} – dert

+0

, но мой вопрос сейчас не является формой ...

Hello

dert

+0

Я протестировал его без формы сейчас, и он работает и добавил код в ответ. – g4ur4v

0

вы должны включать в себя csrfmiddlewaretoken в вашем вызове ajax.

$(function() { 
    $("#test").click(function() { 
    $.ajax({ 
     url: "/xhr_test/", 
     type: 'POST', 
     dataType: "html", 
     data: { 
      csrfmiddlewaretoken: "{{csrf_token}}", 
      phone: 1, 
      skype: 2, 
      other: 3, 
     }, 
     error: function() { 
      alert('Ошибка получения запроса'); 
     }, 
     success: function(data) { 
      alert('ajax worked' + data); 
     } 
    }); 
    }); 
}); 
Смежные вопросы