2014-09-25 2 views
0

내 Ajax 코드가 통과하지 않는 문제가 있습니다. 함수가 비어있는 것처럼 말입니다. 나는 아무 일도 발생하지 않습니다 .. 제출을 클릭 AJAX 버튼이 전송되지 않고 통과하지 않습니다.

내 HTML 코드 :

<head> 

<script src="http://code.jquery.com/jquery-1.11.0.min.js"></script> 
<script src="http://code.jquery.com/jquery-migrate-1.2.1.min.js"></script> 
<body> 
<form method="POST" id="contactForm" > 
<input type="text" name="email" id="email"></input> 
<input type="submit" name="submit"></input> 

</form> 
<script type="text/javascript"> 
$('#contactForm').submit(function(e){ 
    e.preventDefault(); 
    var email = $('#email').val(); 
    $.ajax({ 
     type: 'POST', 
     dataType: 'JSON', 
     url: 'check.php', 
     data: {email: email}, 
     success: function(data){ 
      if(data.status == 'success') { 
       alert('The e-mail address entered is correct.'); 
      } else { 
       alert('The e-mail address entered is Incorrect.'); 
      } 
     } 
    }); 
}); 
</script> 
</body> 
</head> 

내 check.php : 내가 원하는

<?php 

if (isset($_POST['email'])) { 
    $status = 'success' 
} else { 
    $status = 'failed'; 
} 

echo json_encode(array('status' => $status)); 

?> 

내가 제출을 클릭하면, 그냥 아무것도하지 않고 .. 오류가 나타납니다.

내가 빠진 것이 있습니까?

+0

잘못된 폐쇄로 인해 스크립트 오류가 발생했습니다. 'else if'가 부정확하고 "success"콜백이 빠진 후에 괄호를 확인하십시오 : –

+1

name = "submit"은 아니오입니다. – wwwmarty

+0

@ MartyMcKeever, 그럼 내가 isset post에 전화하고 싶으면 그걸 필요로 할거야? 아니? – JayVicious

답변

1

ajax 호출에 전달하는 모든 옵션이 올바르게 처리되었는지 확인하십시오. 예 : 데이터 유형은 dataType이되어야하며 beforesend는 beforeSend가되어야합니다. 여기

은 기준입니다 : http://api.jquery.com/jquery.ajax/

+0

하지만 내가 PHP에서 함수를 호출하고 제출하려면 아약스 보낼 데이터 형식을 사용하는 경우 ?? 다른 함수를 사용하여 json 좋은 stackoverflow 읽을 이유가 – JayVicious

+0

나는 필요한 문자를 대문자로 사용하여 부족 참조하는 경우에만 자본화되다. 데이터 유형은 대문자 T가 있어야만 dataType이 될 수 있습니다. – 3abqari

+0

값을 변경하면 실제로 아무것도 수행하지 않지만 계층 1로 돌아갑니다. 그러나 데이터 유형으로 변경하면 작동합니다. – JayVicious

1

브래킷은 잘못이고, 당신이 "성공"콜백에 대한 : 누락되었습니다. 파이어 폭스 나 크롬의 개발 도구를 사용하여 디버깅하려고,

그리고 너무 여기에 다른 대답에 언급 된 경우 ..

$('#contactForm').submit(function() { 
    var email = $('#email').val(); 
    $.ajax({ 
     type: 'GET', 
     dataType: 'json', 
     url: 'check.php', 
     beforeSend: function() {}, 
     //  v--- missing : 
     success: function (data) { 
      if (data.status == 'success') { 
       alert('The e-mail address entered is correct.'); 
      } else if (data.status !== 'success') { 
       alert('The e-mail address entered is wrong.'); 
      } 
     } // this was misplaced in the line below in your code 
    }); // this was misplaced in the line above in your code 
}); 
+0

정말 고쳐 주셔서 고마워요.하지만 데이터 타입이 성공하지 못하면 모든 것이 나에게 돌아갑니다. 입력 된 이메일 주소가 잘못되었습니다. a.k.a 빈칸을 넣고 숫자도 그 값을 돌려줍니다. – JayVicious

+0

이제 데이터 유형을 dataType – JayVicious

0

을 아래에 고정 된 코드를 참조하십시오. 예를 들어 크롬의 DevTools로에

: 소스 옵션을

  • 디버그 Javascript. 또는 .submit() 함수 안에 약간 console.log()을 추가하여 이벤트 처리기가 트리거되는지 확인하십시오.
  • network tab을 사용하여 ajax 호출이 수행되고 서버에서 수신 한 응답을 확인하십시오.
  • 마지막으로 중요하지 않은 점은 에서 자바 스크립트 오류가 발생했는지 확인하여 다른 스크립트가 스크립트를 실행하기 전에 오류가 발생하는지 확인하십시오.

이러한 기술을 사용하면 무엇이 잘못되었는지 파악하고 어떻게 해결할 수 있는지 확인할 수 있습니다.

+0

으로 변경하면 아무 일도 일어나지 않습니다. 이제는 저에게 효과적이지만 빠른 질문입니다. 두 메시지가 같은 메시지로 계속 표시되는 이유는 무엇입니까? – JayVicious

+0

어떤 이유로 alert()이 두 번 호출 될 수 있습니다. "console log ('라는); 확인하는 기능. 그런 일이 발생하면 DevTools 콘솔에 2 개의 메시지가 표시됩니다. – gerzenstl

관련 문제