2015-11-27 2 views
1

В index.js я могу получить данные на консоли. Но я пытаюсь отобразить его в браузере. Как отправить данные из index.js на HTML-странице может кто-нибудь, пожалуйста, помогите мне ...Как отправить данные с сервера на клиент в node.js

Моего кода в index.js:

walk(dirctory, function(filePath, stat) { 
     console.log(filePath); //able to get data 
     $("#table").val(filePath); 
    }); 

Моего HTML:

<script src="javascripts/script.js"></script> 
<script src="javascripts/jquery-1.11.2.min.js"></script> 

    <div id="box"> 
     <h2>DOWNLOAD</h2> 
      <h> Download MLabs ".tgz" files for one month </h> 
      <div id="text"> 
        <form id="download" method="post" action="/download"> 
        <center> 
         <span class ="mandatory" style="color:red">*</span> 
         <label>Year : <select id ="year" name="year"> 
         <option value="select year:" selected>Select year:</option> 
         <option value="2009">2009</option> 
         <option value="2010">2010</option> 
         <option value="2011">2011</option> 
         <option value="2012">2012</option> 
         <option value="2013">2013</option> 
         <option value="2014">2014</option> 
         <option value="2015">2015</option>  
         </select> 
         </label></br></br> 

         <span class ="mandatory" style="color:red">*</span> 
         <label>Month : <select id ="month" name="month"> 
         <option value="select month:" selected>Select month:</option> 
         <option value="January">January</option> 
         <option value="February">February</option> 
         <option value="March">March</option> 
         <option value="April">April</option> 
         <option value="May">May</option> 
         <option value="June">June</option> 
         <option value="July">July</option> 
         <option value="August">August</option> 
         <option value="September">September</option> 
         <option value="October">October</option> 
         <option value="November">November</option> 
         <option value="December">December</option> 
         </select> 
         </label></br></br> 

         <span class ="mandatory" style="color:red">*</span> 
         <label>Number of files to download : <select id ="files" name="files"> 
         <option value="select value:" selected>Select value:</option> 
         <option value="1">1</option> 
         <option value="100">100</option> 
         <option value="150">150</option> 
         <option value="200">200</option> 
         <option value="ALL">ALL</option> 
         </select> 
         </label></br></br> 

          <input type="submit" name="submit" onclick="createFormElement()" value="Download" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="reset" value="Reset" /> 
        </center> 
       </form> 
       </div> 
    </div> 

<div id="fileDiv"></div> 
</script> 

Моего index.js:

router.post('/download', function(req, res, next) { 

    var year = req.body.year; 
    var month = req.body.month; 
    var limit = req.body.files; 

function walk(currentDirPath, callback) { 
    var fs = require('fs'), path = require('path'); 
    fs.readdirSync(currentDirPath).forEach(function(name) { 
     var filePath = path.join(currentDirPath, name); 
     var stat = fs.statSync(filePath); 
     if (stat.isFile()) { 
      callback(filePath, stat); 
     } else if (stat.isDirectory()) { 
      walk(filePath, callback); 
     } 
    }); 
} 


var dirctory ="/usr/local/ndt-files"+"/"+year+"/"+month; 
walk(dirctory, function(filePath, stat) { 
    console.log(filePath); 
    $("#table").val(filePath); 
}); 


    var stream = fs.createWriteStream('views/downloadInput.txt'); 
    stream.once('open', function(fd) { 
    stream.write(year); 
    stream.write('/'); 
    stream.write(month); 
    //stream.write('/'); 
    //stream.write(limit); 
    stream.end(); 
    }); 

    child = exec("/usr/local/src/node-v0.10.35/nodeprograms/views/scriptformonth.sh", 
    function (error, stdout, stderr) { 

     if (!error) { 

      console.log(stdout); 

     } else { 

      res.send(error); 

     } 
     }); 
}); 
+0

может кто-нибудь, пожалуйста, помогите мне – dev333

ответ

0

Подумайте о веб-серверах как о черных ящиках, которые получают запросы в качестве входных данных и выводят ответ. Когда вы используете веб-браузер для отправки HTTP-запроса на веб-сервер, веб-браузер получит ответ.

Чтобы ответить на ваш вопрос, на стороне сервера вам нечего делать, чтобы отправить ответ конкретному клиенту. Просто используйте res.send('whatever'), и любой клиент, сделавший запрос, получит этот ответ.

+0

Здесь, в функции обратного вызова, Idon't есть запрос и ответ .Затем, как я могу отправить его .walk (dirctory , function (filePath, stat) { console.log (filePath); $ ("# table"). val (filePath); }); – dev333

+0

У вас есть доступ к 'res' внутри обратного вызова' router.post'. Вот почему важно правильно отступать и форматировать свой код :) –

0

Вы отправляете ответ только клиенту при возникновении ошибки с использованием res.send(error) и полностью игнорируете другой сценарий. Вам также необходимо отправить вывод, используя res.send(..).

сделать следующие изменения в коде -

function (error, stdout, stderr) { 

    if (!error) { 

     console.log(stdout); 
     // send the output here - 
     res.send(stdout); 

    } else { 

     res.send(error); 
     } 
    }); 
Смежные вопросы