2011-09-01 1 views
3

AJAX를 사용할 때 __RequestVerificationToken이 전송되지 않고, ValidateAntiForgeryTokenAttribute이 Request.Form에서 토큰을 찾고 있음을 알 수 있습니다. 사람들이이 문제를 어떻게 다루고 있습니까?사람들이 [ValidateAntiForgeryToken]을 사용하여 ActionMethods에 AJAX 게시물을 처리하는 방법

나는 이것을 끝내었다.

$("#regmember-form").submit(function (e) { 
    e.preventDefault(); 

    var token = $('[name="__RequestVerificationToken"]').val(); 

    alert($(this).attr('action')); 

    $.ajax({ 
     url: $(this).attr('action'), 
     type: $(this).attr('method'), 
     data: { __RequestVerificationToken: token } 
    }); 

    return false; 
}); 

accepted answer과 매우 유사합니다.

답변

3

페이지에서 입력을 가져 와서 양식 포스트와 함께 다시 보냅니다. 이것은 당신이 처음에 페이지에 그것을 포함한다고 가정합니다.

$('#somebutton').click(function() { 
    var data = $('[name="__RequestVerificationToken"]').serialize(); 
    $.post('/foo/bar', data, function(result) { 
     // ... 
    }); 
}); 
+0

나는 Ajax.BeginForm 그래서 난 $ ('#의 theform')를 잡아해야 할 것입니다 사용하고 있습니다. 나는이 방법으로 직렬화 경우는 불평 – CrazyCoderz

+0

결과를 다시 게시 할 예정이 밖으로 시도 제출합니다. – CrazyCoderz

+0

@CrazyCoderz - 양식 안에 토큰이있는 한 Ajax.BeginForm을 사용하여 * 작동한다고 생각합니다. 제출시 모든 양식을 양식에 보내야합니다. 제한된 입력만으로 수동으로 제출한다고 가정합니다. 직렬화를 할 때 어떤 오류가 발생합니까? – tvanfosson

관련 문제