Node Beginner:网页上的用户输入以改变JSON请求?

时间:2014-04-02 07:26:43

标签: javascript node.js dom user-input

我的网页userID上有一个文本输入字段,用户在其中指定一些信息,这些信息将附加到JSON请求中。当用户提交信息时,将调用函数fetchJSON

代码如下:

function fetchJSON(){
    //get user input
    var userID = document.getElementById("userID").value;
    //create request and options
    var https= require("https");
    var options = {
        host: "api.example.com",
        path: "/GetHistory/V001/account_id=" + userID,
        method: "GET"
    };

    //handle request
    var request = https.request(options, function(response){
        var body = "";
        response.on("data", function(chunk){
            body += chunk.toString("utf8");
        });
        response.on("end", function(){
            var json = JSON.parse(body);
            console.log(json);
        });
    });
    request.end();
}

当我使用用户ID硬编码(node main.js)从终端运行代码时,代码可以正常工作,但我对如何从具有用户定义输入的网页运行代码感到困惑。

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

首先, node.js 无法操纵客户端DOM。

因此您需要将变量传递给服务器,因此在生成基本网站后使用评论中提到的express

设置基本的get路径

app.get('/api/getprofilebyid/:id',function(req,res){
     //get user input
    var userID = req.params.id; //document.getElementById("userID").value;
    //create request and options
    var https= require("https");
    var options = {
        host: "api.example.com",
        path: "/GetHistory/V001/account_id=" + userID,
        method: "GET"
    };

    //handle request
    var request = https.request(options, function(response){
        var body = "";
        response.on("data", function(chunk){
            body += chunk.toString("utf8");
        });
        response.on('error',function(err){
         res.json(500,{'error':err}); // an error occured.
        });
        response.on("end", function(){
          request.end(); // and the request.
          res.json(200,body); // output json
        });
    });
});

并使用ajax请求或只是浏览到url ..

在客户端使用jQuery ajax $.get

 var userID = document.getElementById("userID").value;
$.get('/api/getprofilebyid/'+userID,function(response){
 // handle response
});