2014-09-17 3 views
0

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

코드 당신은 귀하의 요청에뿐만 아니라 CSRF 토큰을 보낼 필요가

답변

1

를 해결하는 데 도움 주시기 바랍니다.

보기에서 csrf 토큰을 웹 페이지를 생성 할 템플릿으로 전달한 다음 호출로 해당 csrf 토큰을 다시 전달하면 django가 사용자를 유효한 연결로 인식합니다.

자바 스크립트

$(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

ayax 호출에서 csrfmiddlewaretoken

$(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); 
     } 
    }); 
    }); 
}); 
관련 문제