Ajax,NodeJS with Express,Javascript

时间:2013-11-21 06:27:43

标签: javascript ajax node.js express

我正在使用nodejs,html,express,node-nosql和JavaScript。我有一个问题wherin html页面在下面给出

<body>
    <form name="form1" method="post" onSubmit="createTable();return myFunction();">
    <input type ="text" name="DomainName" id="Domain_name" required="" />
    <input type="submit" value="Submit" />
     </form>
    <form name="form2" action="http://www.cs.tut.fi/cgi-bin/run/~jkorpela/echo.cgi" method="post">
    <div id="table_container"></div>
    <input type="submit" value="submit" />
    </form>
</body>

javascriptFunction如下:

function myFunction() {
       var input_domain = document.forms["form1"]["DomainName"].value;
    if (input_domain == null || input_domain == "") {
        alert("Please enter a valid domain");
        return;
    }
        return false;
    }

    function createTable() {
    document.getElementById("table_container").innerHTML = "";
    var input_domain = document.forms["form1"]["DomainName"].value;
    if (input_domain == null || input_domain == "") return;
    var names = ["website1", "website2"];
    var table = document.createElement("table"),
    ...using javascript dynamically create a table with certain columns for each of the websites listed in the var names list ...
    document.getElementById("table_container").appendChild(table);  
    </script>

我现在面临的问题是,当我点击form1的提交按钮时,      var names = [“website1”,“website2”]; 必须从数据库中检索。我知道我必须使用带有nodejs的ajaxrequest。但我不知道如何退回和处理它!请帮忙。

2 个答案:

答案 0 :(得分:0)

我想弄清楚你的意思:

  1. 变量names的值是字符串数组
  2. 一开始,这些字符串位于服务器端的表格中。
  3. 调用该函数时,您需要检索这些字符串,将它们放在names中,然后按下。
  4. 我做对了吗?

    如果是这样,你已经找到了几个单独的部分:

    • 您需要充分了解数据库以创建表格并使用这些字符串填充它。
    • 你需要学习足够的Node.js来编写一个函数来检索那些字符串
    • 您需要充分了解Node.js以编写将通过HTTP提供结果的函数
    • 你需要学习足够的Javascript(可能还有jQuery)来编写一个能够发出HTTP请求并读取结果的函数

    这些任务中的每一项都相当容易,但显然超出了单个StackOverflow答案的范围。

答案 1 :(得分:0)

评论您作为评论放置的nodejs代码

ajax请求的快速路由可以像

那样
/** include these require and connect lines if you already dont have it in the code **/
var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'localhost',
  user     : 'me',
  password : 'secret',
});
connection.connect();

/** express route for ajax request starts **/
$.post("/ajaxTarget",function(data){
    connection.query('SELECT DBName FROM CrawlerDBInfo where Domain =' + "' " + input_domain + " '" + ';', function (error, rows, fields) { 
        if (rows.length == 0) { 
            res.json({error:"no record!!"});
        } else {        
            res.json({data:rows});
        }       
    }   
});

注释:

  1. 您正在使用express,因此您可以直接使用res.json发送json响应。
  2. 无需循环遍历数组并构建json结果。
  3. 还要确保你把最初的mysql require&amp;连接代码中的行。
  4. 还考虑使用mysql查询回调中可用的error对象。