2014-02-26 2 views
0

Node.js, Express, Jade 및 MongoDb를 사용하여 웹 응용 프로그램을 만들고 있습니다. 사용자가 확인 코드를 양식에 입력해야하는 페이지를 작성했습니다. 이 코드는 코드가 맞는지 확인하는 함수입니다 (checkConfirmationCode).node.js, return 함수에 html을 추가하십시오.

"귀하의 코드가 옳고 그른지"와 같은 html 텍스트를 확인 페이지에 추가하고 싶습니다. 기능은 다음과 같이이다 :

는이 작업을 수행하는 가장 좋은 방법은 무엇입니까
exports.checkConfirmationCode = function(db) { 
    return function(req, res) { 
     var sentCode = req.body.confirmationCode; 
     var rightCode= '123456'; 
     if(sentCode==rightCode) 
      //append html to the request page 
     else 
      //append html to the request page 
    }; 
}; 

? 나는 JQuery와에 대해

$("#content").append("your code is right/wrong") 

같은 것을 생각하지만 일을 does't, 내가 어떤 JQuery와 NPM을 사용한다, 권리? 이렇게하는 것이 좋은 방법일까요?

+0

의 인스턴스 페이지를 새로 고침하면 클라이언트 쪽 AJAX 요청이 필요합니다. 페이지를 새로 고치는 것이 좋으면'res.send ("Your code is right") 만 사용하십시오. – tymeJV

+0

이렇게하면 페이지의 나머지 부분이 사라집니다. "귀하의 코드가 옳다" – Nicola

+0

예 - 새 페이지를로드합니다. 페이지를 유지하고 싶다면 AJAX 요청 – tymeJV

답변

0

으로 말했습니다. 페이지를 다시로드하지 않으려면 코드 확인 제출 버튼을 바인딩하여 익스프레스 엔드 포인트에 대해 ajax POST를 수행하면 코드가 정확하면 200을 반환하고 코드가 맞으면 401 (Unauthorized)을 반환합니다. 잘못된 것입니다.

exports.checkConfirmationCode = function(db) { 
    return function(req, res) { 
     // presumably DB lookup for rightCode here 
     if(req.body.confirmationCode === rightCode) { 
      res.send(200); 
     } else { 
      res.send(401); 
     } 
    } 
} 

그리고 당신의 명시 적 설정이 bodyParser 미들웨어에게 엔드 포인트를 가정 게시물에 대한 경로를 포함해야한다는 /confirmCode입니다 :

app.use(express.bodyParser()); 
app.use(app.router); 

app.post('/confirmCode', checkConfirmationCode(db)); 
0

코드는 서버 측 (Node.js를) 당신이 원하는에있다 경고 메시지를 클라이언트 측에 넣으십시오.

그래서 클라이언트가 메시지를 어떻게 든 표시 할 수 있도록 클라이언트에 결과를 보내야합니다.

때문에,

1.Send 일 사용자는 가져 오기/후/socket.io/AJAX 또는 당신이 무엇을 코드가 올바른지 노드에 있는지 여부를 2.check

을 좋아 통해 서버에 썼다. JS 또는 socket.io/AJAX를 통해 결과를 전송

3.send HTTP 응답으로 클라이언트에 결과 (전체 페이지 플러스 경고 메시지의 몸은) 비동기

(유일한 경우 당신은 socket.io를 사용/AJAX)

4. 클라이언트가 결과를 수신하면 결과 메시지를 jquery로 html에 추가합니다. 더 함께 할 없습니다하려면 여기

은 socket.io

서버 측

var io = require('socket.io'); 

io.sockets.on('connection',function(socket){ 
    socket.on('formAnswer',function(data){ 
     //check whether data.answer is correct answer or not 
     if(data.answer = collect){ 
      io.sockets.socket(socket.id).emit({ 
       message : 'your code is right' 
      }); 
     }else{ 
      io.sockets.socket(socket.id).emit({ 
       message : 'your code is wrong' 
      }); 
     } 
    }); 
}); 

클라이언트 측 (예 something.ejs 같은 템플릿 파일)

<script> 
var socket = io.connect(); 

socket.on('resultData',function(data){ 
    $("#content").append(data.message); 
}); 
</script> 
//send what user wrote when submit is pushed. 
<script> 
$answerForm.submit(function(e){ 
    socket.emit('formAnswer',{answer : 'what user wrote'}); 
}); 
</script> 
관련 문제