2016-06-16 3 views
-1

사용자가 작성할 양식이 있습니다. 서버 측에서는 양식이 제출되면 전자 메일을 보내기 위해 mailgun을 사용합니다.Node.js에서 Materialize javascript를 호출하십시오.

오류가 발생하면 토스트 대화 상자 (Javascript에 Materialize.toast("Error", 2500);)를 표시하려고합니다. 오류 검사는 서버 측에서 발생하므로이 메서드를 호출하는 방법을 모르겠습니다.

HTML 내부에 <script>을 사용하여 제출시 페이지가 새로 고쳐지는 것을 막을 수 있습니다. 그러나이 오류를 처리하는 방법을 알 수는 없었습니다. <script>. 여기에 있습니다 :

<script type="text/javascript"> 
$("#contact-form").submit(function(e) { 
    e.preventDefault(); // Prevents the page from refreshing 
    var $this = $(this); // `this` refers to the current form element 
    $.post(
     $this.attr("action"), // Gets the URL to sent the post to 
     $this.serialize(), // Serializes form data in standard format 

     function(data) { 
     }, 
     "json" // The format the response should be in 
    ); 
    Materialize.toast("Toasty McToastface!", 1000); 
    $('#contact-form').trigger('reset'); 
}); 
</script> 

나는 모든 도움을 주셔서 감사합니다.

답변

2

Upon an error, I want to display a toast dialog (Materialize.toast("Error", 2500); in Javascript). Since the error checking happens on the server side, I'm not sure how to call that method.

당신은 당신의 서버 측 스크립트에서 오류를 반환하고,이 오류라고 아닌지 확인하기 위해 성공 콜백에서 data을 확인해야합니다.

:

$.ajax()

오류 콜백 ( $.post()은하지 않습니다)하지만, 시간 제한, 구문 분석 오류 등 당신은 클라이언트에서 다음과 같이 그것을 할 수

있을 때 그에만 호출됩니다 methodhas 이 작업을 위해

$.post(
    $this.attr("action"), 
    $this.serialize(), 
    function(data) { 
     if(data.error) { 
      Materialize.toast("Toasty McToastface!", 1000); 
     } 
    }, 
    "json" 
); 

물론, 서버는 거세한 숫양이나 이메일을 보낸 여부에 따라 true 또는 false로 설정된 error 속성을 가진 JSON 객체로 응답해야합니다.

당신은 당신이 그래서 https://github.com/websockets을 사용할 수 WebSocket을 (socket.io 같은)

+0

을 사용할 수 있습니다, 서버가이 콜백 외부의 클라이언트와 통신 할 수있게하려면/ws 그리고 서버 측에서 에러가 발생하면''error "'를 보내고 클라이언트는 그와 상호 작용할 것인가? – Nxt3

+1

네, 그게 효과가 있습니다. 나는 그 라이브러리 (ws)를 사용하지 않았지만, 과거에 socket.io를 사용했고, 뭔가 잘못되었을 때 단순히 이벤트를 내 보내어 클라이언트 측에서 잡아서 뭔가를 할 수 있습니다. – Drown

+0

서버 측은 어떻게됩니까? 나는 Express를 사용하기 때문에 socket.io를 어떻게 사용하는지 혼란 스럽다. 다음은 폼 제출을 처리하는'app.post()'입니다 : https://codeshare.io/XfCCQ – Nxt3

관련 문제