我正在尝试通过使用DOMParser来定位构成网页的元素id
并将其存储在MySQL数据库中来获取数据。
当我在浏览器中使用通过单击按钮执行的功能执行此操作时,我可以完美地获取数据,然后将其添加到网页上的表格中。
但是,当我创建一个类似的脚本时,该脚本具有将此数据添加到MySQL数据库的附加功能,它不会获取所需的数据,但会返回未定义的数据。我认为这与同步和异步请求有关,但是在浏览器中运行良好!
HTML页面脚本在浏览器(Google Chrome)中运行
var data1, data2, data3, data4;
var sno = 1;
function go(){
var iurl = 'http://example.com';
$.get(iurl, function(response){
let parser = new DOMParser();
let parsedHtml = parser.parseFromString(response, 'text/html');
data1 = parsedHtml.getElementById('data1id').value;
data2 = parsedHtml.getElementById('data2id').value;
data3 = parsedHtml.getElementById('data3id').value;
data4 = parsedHtml.getElementById('data4id').value;
$(".table-main").append("\<tr\>\<td\>" + sno + "\<\/td\>\<td\>" + data1 + "\<\/td\>\<td\>" + data2 + "\<\/td\>\<td\>" + data3 + "\<\/td\>\<td\>" + data4 + "\<\/td\>\<\/tr\>");
sno++;
second();
})}
function second(){
console.log("INSERT into AllTheData values ('" + sno + "', '" + data1 + "', '" + data2 + "', '" + data3 + "', '" + data4 +"')");
// returns the required data
}
要使用cmd(和Node.js)运行的脚本
var jsdom = require("jsdom");
var { JSDOM } = jsdom;
var { window } = new JSDOM(`<!DOCTYPE html>`);
var $ = require('jquery')(window);
var DomParser = require('dom-parser');
var parser = new DomParser();
var data1, data2, data3, data4;
var sno = 1;
function go(){
var iurl = 'http://example.com';
$.get(iurl, function(response){
let parsedHtml = parser.parseFromString(response, 'text/html');
data1 = parsedHtml.getElementById('data1id').value;
data2 = parsedHtml.getElementById('data2id').value;
data3 = parsedHtml.getElementById('data3id').value;
data4 = parsedHtml.getElementById('data4id').value;
sno++;
second()
})}
function second(){ // Doesn't return the required data
console.log("INSERT into AllTheData values ('" + sno + "', '" + data1 + "', '" + data2 + "', '" + data3 + "', '" + data4 +"')");
var mysql = require('mysql');
var con = mysql.createConnection({host : "localhost", user: "root", password: <password>, database : <database name> , insecureAuth: true});
con.connect(function(err){
if(err) throw err;
console.log("Connected!");
var sql = "INSERT into <table name> values ('" + sno + "', '" + data1 + "', '" + data2 + "', '" + data3 + "', '" + data4 +"')";
con.query(sql, function(err, result){
if(err) throw err;
console.log("1 record inserted!");
});
});}
我通过使用cd
导航到cmd来运行该脚本,然后
node <filename>
返回(其中1
是sno
中的值)
INSERT into <table name> values (1, 'undefined', 'undefined', 'undefined', 'undefined')
Connected!
1 record inserted!
和值undefined
插入到MySQL表中。
预期:
INSERT into <table name> values (1, <value of data1>, <value of data2>, <value of data3>, <value of data4>)
Connected!
1 record inserted!