2017-12-03 1 views
0

이 내 코드입니다 :POST 요청에서 html 파일을 렌더링하는 방법은 무엇입니까?

app.post('/convert', function(req,res){ 
     var auxiliar = "somo Ubuntu command line(this works)"; 
     exec(auxiliar, function(err, stdout, stderr){ 
     if(err){ 
      console.log(err); 
     } 
     else{ 
      console.log("Conversion succesful"); 
      res.sendFile(path.join(__dirname, 'views/test.html')); 
     } 
     }); 
}); 

는 내가하고 싶은 것은 test.html를 위해 HTML 파일을 변경할 때 간부 완료. 그러나 그것이 끝나면 ("변환 성공") 잘 인쇄되지만 html은 test.html로 변경되지 않습니다. 어떻게 해결할 수 있을까요?

고맙습니다.

+0

성공적인 요청시 test.html을 렌더링하고 싶다고 생각합니다. 'res.redirect()'및/또는'res.render()'를 사용해 보셨습니까? 또한 @Beatle의 대답으로'app.set ('views', path.join (__ dirname, 'views'))와 같은 뷰 엔진 설정이 있습니까? app.set ('보기 엔진', 'hbs'); '? – ionizer

답변

0

클라이언트 측에서는 ajax 호출을 사용하여/convert를 호출했다고 가정합니다.

비동기 적으로 POST 요청을/변환 (아약스)하면 브라우저가 새 페이지를 렌더링하지 않습니다.

작업 속성이/convert 인 양식을 작성하고 양식을 제출하십시오. 그러면 test.html을 렌더링해야합니다.

동적 양식

$('<form>', { 
    "id": "dynamicForm", 
    "html": '<input type="text" id="input" name="input" value="' + jsonString + '" />', 
"action":"/convert", 
    "method":"post"}) 
.appendTo(document.body).submit(); 

익스프레스

var bodyParser = require('body-parser') 
app.use(bodyParser.urlencoded({ 
extended: true 
})) 
app.use(bodyParser.json()); 
app.post('/convert',function(request,response){ 
    var input=Json.parse(request.body); 
}) 
+0

예는 아약스 호출에서 온 것입니다. 하지만 일부 데이터를 보내기 때문에 조금 더 복잡해졌습니다. 어떻게 그 양식을 만들겠습니까? –

+0

복잡성에 대해 자세히 설명해 주시겠습니까? 그것 때문에 파일인가요? 아약스를 통해 전송되는 모든 데이터는 일반 양식을 통해서도 처리 할 수 ​​있습니다. – Raghu

+0

Json 형식의 Javascript 변수 (문자열)입니다. –

0

당신은 ("../보기/test.html를") res.render 또는 어쩌면 뷰 디렉토리가 잘못 봤어

+0

디렉토리가 정확합니다. ( –