2012-05-15 5 views
0

이 사이트에서 페이지를 벗어나지 않고 POST 양식을 제출하는 방법을 찾았습니다. 이 스크립트에서는 양식을 제출 한 후 기능을 수행하는 방법에 대한 지침을 제공합니다. 여기에 스크립트가 어떻게 생겼는지 : 당신은 양식이 제출 됐어요 후 등 경고 등의 자리를 차지할 다른 자바 스크립트를 지정할 수 있습니다양식 제출 후 스크립트 실행

$(document).ready(function(){ 
$form = $('form'); 
$form.submit(function(){ 
    $.post($(this).attr('action'), $(this).serialize(), function(response){ 
    },'json'); 
    return false; 
}); 
});​ 

그들은 말했다, function(response){ 사이 },'json');. 시도했습니다

불행히도, 그게 작동하지 않습니다, 아무도 왜 말해 줄 수 있습니까? jsFiddle을 설정했습니다. 도와주세요. 감사.

+0

요청이 내가 볼 – zerkms

+0

@zerkms을하지 못하기 때문에 그것은 jsfiddle 작동하지 않습니다,하지만 난 또한 실제 서버를 시도하고 여전히 '수상 일하지 마라. – henryaaron

+0

"작동하지 않음"을 정의하십시오. 코드를 통해 디버깅 할 때 어떤 일이 발생합니까? 콜백 함수가 전혀 실행되지 않습니까? AJAX 요청이 성공합니까? – David

답변

0

$ .post를 사용하면 "함수 (응답)"는 성공적인 결과 후에 만 ​​호출되므로 서버가 요청을 처리하는 동안이 함수 내에서 작업하는 것에 대해 잘못된 정보를 얻게됩니다.

는 ('양식')에 $를 배치, 서버에 요청을 보낸 후 처리를 계속하려면 $ .post 호출 후) (숨기기. 형태가 변경 될 때

$form.submit(function(){ 
    $.post(
    $(this).attr('action'), $(this).serialize(), 
    function(response){ 
    } 
    ,'json' 
); 
    $('form').hide(); 
    return false; 
}); 
-1

당신의 바이올린은 괜찮 았는데

<form action="#" method="post"> 

그리고 http://api.jquery.com/jQuery.post/에서 문서를이 유효한 구문 및 http://www.johnnycode.com/blog/2010/04/08/jquery-form-serialize-doesnt-post-submit-and-button-values-duh/ 또한 실행중인 샘플입니다 것을 보여줍니다. 이 기능이 전혀 작동하지 않는다면, 바보처럼 페이지에 jQuery에 대한 참조가 있습니까?

+0

번호. "#"에 게시하지 마세요. 진정한 "행동"을 유지하십시오. 그것은 문제의 근본 원인을 찾아서 패치하지 않고 작동해야합니다. –

+0

그런 다음 대신

를 사용하십시오. 바이올린은 실제로 게시해야합니다./echo 엔드 포인트를 사용할 수 있습니다. – BrianM

0

문제 :

  1. 설정 form하지 $form 같은 자바 스크립트 변수입니다. 그런 다음 jQuery에서 $(form)으로 사용하십시오.
  2. $(this).attr('action')의 컨텍스트는 $.post() 콜백입니다 (이 아닙니다). 해결책 : $(this) 대신 $(form)을 입력하십시오.

솔루션 :

$(document).ready(function(){ 
    form = $('form'); 

    $(form).on('submit', function() { 
     $.post($(form).attr('action'), $(this).serialize(), function(response) { 
      $('form').hide(); 
     },'json'); 

     return false; 
    }); 
});