2011-12-24 5 views
7

node.js를 사용하고 표현합니다. 버튼 (btnSend)을 누르면 express (페이지를 새로 고치지 않고)로 node.js로 데이터를 보내려고합니다. 데이터를 보내려면 어떻게해야합니까? jquery 사용하기?Node.js - 양식 제출

도와주세요.

감사합니다.

$("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) { /** code to handle response **/ }, 
     "json" // The format the response should be in 
    ); 
}); 

이 코드는 페이지의 모든 폼 요소를 발견하고 그들로부터 제출 이벤트를 수신

<form action="/Send" method="post"> 
Username: 
<input type="text" name="user" id="txtUser" /> 
<input type="submit" value="Submit" id="btnSend" /> 
</form> 
+1

이 주제는 아니지만 "사용자 이름 :"및 텍스트 입력 요소를 [레이블 태그] (https://developer.mozilla.org/en/HTML/Element/label)로 묶는 것을 고려하십시오. 양식을 좀 더 의미 있고 사용하기 쉽도록 만듭니다. – Xavi

답변

15

은 여기 jQuery를이 어떻게 보일지의 대략적인 개요입니다. 양식은 여러 가지 방법으로 제출할 수 있습니다 (예 : 제출 단추 클릭, Enter 키 누르기 ... 등). 유용성을 위해 제출 단추에서 클릭 이벤트 수신 대기에 직접 반대하는 제출 이벤트를 수신하는 것이 가장 좋습니다 .

제출 이벤트가 발생하면 위의 코드는 우선 e.preventDefault을 호출하여 기본 브라우저 동작 (특히 페이지를 새로 고침)을 방지합니다. 그런 다음 $.post을 사용하여 양식 데이터를 action 속성에 지정된 URL로 보냅니다. $.fn.serialize은 표준 형식으로 양식 데이터를 직렬화하는 데 사용됩니다.

특급 코드는 다음과 같이 보일 것이다 : express.bodyParser

var express = require('express') 
    , app = express.createServer(); 

app.use(express.bodyParser()); // Automatically parses form data 

app.post('/Send', function(req, res){ // Specifies which URL to listen for 
    // req.body -- contains form data 
}); 

app.listen(3000); 

문서는 조금 스파 스이지만,이 커버 아래에 node-querystring 사용과 같은 code spelunking 조금 후에 보인다.

희망이 도움이됩니다.

+0

클라이언트 쪽 응답 기능을 실행하는 데 문제가 있습니다. 함수 (데이터) {/ ** 응답을 처리하는 코드 ** /}, 클라이언트 측 코드에 res.end() 또는 일부를 추가해야합니까? – CMaury

+1

아니, 서버 쪽에서 만 클라이언트 측에서'res.end'를 호출 할 필요는 없습니다. Chrome의 개발 콘솔에서는 네트워크 탭에 게시 요청이 오류없이 완료되었는지 확인합니다. 또한 서버 측 응답 코드 (예 :'// req.body - 양식 데이터 포함 '기능의 코드)를 살펴보고 응답을 올바르게 끝내야합니다. 희망이 도움이됩니다. – Xavi

+0

문제의 범위를 좁힐 수 있었으며이 질문과 관련이 없습니다. 어떤 이유로 응용 프로그램은 영원히 사용할 때 fs.appendfile을 찾을 수 없지만 nodemon을 사용할 때 제대로 작동합니다. – CMaury