繁体   English   中英

Ajax,带有Express的NodeJS,Javascript

[英]Ajax,NodeJS with Express ,Javascript

我正在使用nodejs,html,express,node-nosql和JavaScript。 我在下面的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的Submit按钮时,
var名称= [“ website1”,“ website2”]; 必须从数据库中检索。 我知道我必须将ajaxrequest与nodejs一起使用。 但是我不知道如何退还和处理它! 请帮忙 。

我想弄清楚你的意思:

  1. 变量names的值是字符串数组
  2. 首先,这些字符串在服务器端的表中。
  3. 调用该函数时,您要检索那些字符串,将它们放入names ,然后按。

我说对了吗?

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

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

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

评论您放置为注释的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&connect行。
  4. 还可以考虑使用mysql查询回调中可用的error对象。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM