제출 단추에 ajax 호출을하는 이유는 사용자가 javascript를 사용할 수 없도록 설정하면 자연스러운 대체 수단입니다. 요청이 ajax 요청이거나 그냥 곧바로 전송되는 경우 백엔드 로직을 감지하고 ajax 인 경우 데이터를 다시 보내거나 그렇지 않은 경우 요청을 'old school'방식으로 처리 할 수 있어야합니다.
편집 : 컨텍스트의 경우. 사용자가 양식 그냥 정상처럼 /processForm.php에 제출, 자바 스크립트를 사용하지 않는 경우에
<form action="/processForm.php" method="POST">
<input type="submit" value="submit" />
</form>
그런 다음 jQuery를이
$('form').bind('submit', function(e){
e.preventDefault();
//do your stuff
});
처럼 보일 수 있습니다.
양식이 ajax를 통해 전송되었는지, 다음 php로 전송되었는지는 감지 할 수 있습니다 (사용 중인지는 모르겠지만 그게 내가 가진 것입니다).
if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
/* handle ajax here */
}else{
/* handle normal submit here */
}
"모순"이란 무엇을 의미합니까? 모순 된 느낌은 무엇입니까? –
ajax 호출을하기 전에 기본값을 방지하지 않으면 제출 프로세스와 Ajax 프로세스를 통한 양식 제출이 서로 모순되는 것을 느꼈습니다. – shuniar
클라이언트가 AJAX를 지원한다면 감사 메시지를 표시하거나 무언가 상태를 확인하기 위해 전체 페이지를 새로 가져 오기 위해 서버로 왕복해야합니다. 나 자신은 AJAX를 사용하여 데이터를 제출하고 내 용도에 따라 HTML 또는 JSON을 반품 할 것이다. 양식 제출시 기본 설정을 사용하지 않으면 중복 제출이 이루어집니다. 아이디어는 정상적으로 저하되도록 코딩하는 것입니다. 양식 제출에 바인딩하여 AJAX가 활성화되어 있는지 확인하고 preventDefault인지 확인한 다음 AJAX를 수행 할 수 있습니다. –