양식이 실제로 제출되지 않도록 Ajax가 실행되고 'e.preventDefault();
'이 사용 된 양식이 있습니다.JavaScript/jQuery Pause 함수를 다시 실행하십시오.
내 문제 : Ajax가 성공한 후에야 양식을 서버에 제출하고 싶습니다.
- 사용자는
- 아약스는 몇 가지 정보를 전송 해고 '제출'을 클릭하면, 사용자는 페이지에 남아 : 그래서 예를 들어 나는 다음과 같은 시나리오를 달성하기 위해 노력하고 있습니다.
- Ajax가 다시 돌아 왔으며 이제 우리는이 기능을
success:
의 기능으로 시작할 수 있습니다. - 성공 함수가 실행되고 사이트의
form data
이 서버에 제출됩니다.
HTML :
<form name="demoFiler" action="save/uploadCreate.php" method="POST" enctype="multipart/form-data">
//Some inputs, checkboxes radios etc.
<input type="submit" name="submitHandler" id="submitHandler" value="Upload" class="buttonUpload hideButton" />
</form>
자바 스크립트 :
$('#'+this.config.form).submit(function(e) {
var $this = $(this);
e.stopPropagation();
e.preventDefault();
//Necessary vars for the 'data' defined here
$.ajax({
type:"POST",
url:this.config.uploadUrl,
data:data,
cache: false,
contentType: false,
processData: false,
success:function(rponse) {
// do something with rponse
$this.off('submit').submit(); // unbind the handler and submit
}
});
}
정말 올바른 방법이 아닙니다. AJAX 호출에 양식의 모든 작업을 수행하게하거나 오류를 리턴하십시오. 반환 결과 POST가 성공했다는 것을 나타내면 페이지를 폼 대상으로 다시로드 할 수 있습니다. 동기식 AJAX 호출로 브라우저를 일시 중지 할 수는 있지만 일반적으로 사용자 경험은 끔찍한 것으로 간주됩니다. – Pointy
흠, 아약스 또는 uploadCreate.php를 통해 모든 것을 게시하고 부분적으로 또는 다른 하나를 통해 게시하지 않습니까? – user1775598
예. 또 다른 옵션은 AJAX를 잊어 버리고 양식을 게시하는 것입니다. 그렇게하면 두 경우 모두 하나의 HTTP 요청 만 처리 할 수 있습니다. 성공하면 2가 아닙니다. 별도의 두 HTTP 요청간에 유효한 양식 데이터의 유효성 상태에 의존하는 것은 위험합니다. – Pointy