2012-10-26 3 views
0

사용자 요청을 다른 페이지로 리디렉션하려는 동안 내보기에서 아약스로 요청을 어떻게 처리 할 수 ​​있는지 알고 싶습니다. 예를 들어, 사용자가 이메일을 성공적으로 보내면 다른 페이지로 리디렉션하려고합니다. 이 요청을 아약스에서 사용할 수 있도록하려면 어떻게해야합니까?ajax로 리디렉션 URL 작업 만들기

나는 views.py에서이 기능을 가지고 :

def compose(request, recipient=None, success_url=None, recipient_filter=None): 
    if request.is_ajax():   
     if request.method == "POST": 
      sender = request.user 
      form = compose_form(request.POST, recipient_filter=recipient_filter) 
      if form.is_valid(): 
       // do some processing 
       if success_url is None: 
        success_url = reverse('messages_inbox') 
       if request.GET.has_key('next'): 
        success_url = request.GET['next'] 
       return HttpResponseRedirect(success_url) 
    else: //rest of function 

그리고, 예를 들어, 아약스와 함께 전달되는 요청을 'messages_inbox'를 체크. 그래서 어떻게 된거야?

+1

게시 자바 스크립트를 참조하십시오. – jpic

답변

1

보기는 아약스 요청의 경우 리디렉션해야하는보기가 아닙니다. 오히려보기가 ajax 호출에 success_url을 리턴 한 다음 success 콜백을 사용하여 사용자를 재 지정하십시오. JQuery와

$.ajax(url, data, function (data, response, xhr){ 
    ... 
    var url = success_url; //Get success url from your data which is a json response object 
    $(location).attr('href',url); 
}); 

당신은뿐만 아니라 JQuery와 않고 리디렉션을 수행 할 수와

예는 How to redirect to another webpage in JavaScript/jQuery?

+0

그러면 뷰가 응답을 렌더링하지 않았으므로 해당 페이지의 세션 변수 또는 요청 속성에 어떻게 액세스 할 수 있습니까? – cafebabe1991

+0

기존 세션/요청 속성은 이미 http://stackoverflow.com/questions/2551933/django-accessing-session-variables-from-within-a-template 페이지에서 사용할 수 있습니다. 리디렉션 된 요청의 세션 정보를 원할 경우 아약스의 콜백 함수에있는'response'는 세션 관련 정보를 액세스 할 수있는 헤더를 갖습니다. –

+0

하지만 질문에 당신은 ..에 대한 링크를 언급했다 .. 응답을 사용하여 렌더링 .. 그리고 당신은 헤더에서 정보를 검색하는 방법을 보여줄 수 있습니다 – cafebabe1991