JSON 형식의 양식을 AJAX로 제출하려고합니다.AJAX로 JSON 양식 제출
하지만 양식이 제출 될 때마다 양식 작업 페이지로 리디렉션됩니다.
는 HTML
<form id="acc" action="#" method="post" autocomplete="off">{% csrf_token %}
<p>Username: {{accform.username}}</p>
<p>Password: {{accform.password}} </p>
<center><input type="submit" value="update" class="button" /></center>
</form>
jQuery를
$("#acc").submit(function(){
username = $(this).find("#id_username").val();
password = $(this).find("#id_password").val();
var arr = { "X-CSRFToken": getCookie("csrftoken"), "username": username, "password": password};
$.post("/myaccount/", arr,function(data){
alert(data);
}, "json");
return false;
});
나는 또한 시도했다 위의 코드에 대한 대안은 다음과 같습니다
$("#acc").submit(function(){
username = $(this).find("#id_username").val();
password = $(this).find("#id_password").val();
var arr = { "X-CSRFToken": getCookie("csrftoken"), "username": username, "password": password};
$.ajax({
url: '/myaccount/',
type: 'POST',
data: JSON.stringify(arr),
contentType: 'application/json; charset=utf-8',
dataType: 'json',
async: false,
success: function(msg) {
alert(msg);
}
});
return false;
});
은 또한 것으로 나타났습니다 나는 단지 방향이 바뀐다. n csrftoken
쿠키를 받고 있습니다.
왜 그럴까요? 함수가 계산되는 동안
'return false '는 양식 제출을 중단해야합니다. 제안 할 수있는 유일한 방법은 submit 함수에서'event'를 매개 변수로 추가하고 함수 내에'event.preventDefault(); '를 추가하는 것입니다. – Archer
@Archer 시도했는데 아무런 영향이 없었습니다. 그러나 문제는'csrf' 쿠키를 얻음으로써 발생하는 것 같습니다. –
'getCookie ("csrftoken")'을 콘솔에 입력하면 어떻게됩니까? – Archer