【问题标题】:Ajax,NodeJS with Express ,JavascriptAjax,带有 Express 的 NodeJS,Javascript
【发布时间】:2013-11-21 06:27:42
【问题描述】:

我正在使用 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>

javascript函数如下:

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"]; 必须从数据库中检索。我知道我必须将 ajaxrequest 与 nodejs 一起使用。但是我不知道应该如何退货和处理!请帮忙。

【问题讨论】:

  • 很遗憾,您提出的问题非常基础。你必须弄清楚如何向 node.js 服务器发出 ajax 请求,以及 node.js 将如何处理这个请求。在您尝试使用它之前,这几乎是您需要了解的基本知识。所以不要指望在这里得到帮助来解决你的“问题”。请继续学习基础知识。
  • @Munim :遗憾的是,他将代码块作为对下面答案的评论。 :P
  • @mithunsatheesh 啊,没注意到。无论如何,如果用户希望我们提供帮助,他们应该给出完整的问题。这听起来像是一个没有先尝试过任何事情的人。

标签: javascript ajax node.js express


【解决方案1】:

评论您作为评论放置的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 要求和连接行放入代码中。
  4. 还可以考虑在 mysql 查询回调中使用 error 对象。

【讨论】:

  • @rasikavijay 没问题.. :)
【解决方案2】:

我想弄清楚你的意思:

  1. 变量names的值是字符串数组
  2. 一开始,这些字符串位于服务器端的表中。
  3. 调用函数时,您想检索这些字符串,将它们放入names,然后按。

我说对了吗?

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

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

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

【讨论】:

  • 是的。你做对了。字符串在 mysql 数据库中,我使用以下代码检索它们 connection.query('SELECT DBName FROM CrawlerDBInfo where Domain =' + "'" + input_domain + " '" + ';', function (error, rows, fields) { res.writeHead(200, { 'Content-Type': 'text/plain' }); str = '['; for(var i=0;i
  • @rasikavijay :如果您可以将代码阻止您的问题,我会提供帮助。向我们展示您的尝试。
猜你喜欢
  • 2013-03-09
  • 2013-06-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-03
  • 1970-01-01
相关资源
最近更新 更多