此bash脚本生成一个JSON文件,我将需要解析该JSON文件并将其发送到客户端Java脚本以显示它。我试图在不刷新页面的情况下执行此操作,但我也不想使用jquery。我已经尝试过Axios,但也许我不明白。
这是我的Ajax请求,因此无法到达NodeJs函数,也无法加载文件,因为即使这是直接路径。我认为如果可以运行该功能,此方法将起作用。
我已经为此工作了大约一个星期,我只是不理解这些AJAX请求。如果可以的话,请做并给出详细说明。
function digIt() {
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function () {
if(xhr.readyState === 4 && xhr.status === 200) {
document.getElementById('mapSection').innerHTML = xhr.responseText;
} else {
alert(xhr.statusText);
}
};
xhr.open('GET', "./../../middleware/index.js", true);
console.log("done");
canYouDigIt(domain);
xhr.send();
};
这是我的HTML,是用Jade / Pug编写的。
section(id="digToolWrapper")
form(id="digToolInput")
ul
li #[input(id="digTool" name="domain" type="text" placeholder="Can you dig it?")]#[input(id="whois" value="whois" type="button" onclick="digIt(domain)")]
这是我的middleware / index.js文件。
const shell = require('shelljs');
function loggedOut(req, res, next) {
if (req.session && req.session.userId) {
return res.redirect('/profile');
}
return next();
}
function checkForbidden(req, res, next) {
if(! req.session.userId) {
var err = new Error("You are not authorized to view this page.");
err.status = 403
return next(err);
}
return next();
}
// Whois Bash Script!!!
function canYouDigIt(domain) {
shell.env["domain"] = domain;
shell.exec(digIt.sh)
console.log("here")
};
module.exports.canYouDigIt = canYouDigIt;
module.exports.checkForbidden = checkForbidden;
module.exports.loggedOut = loggedOut;
这是我要运行的脚本,以供参考以了解我要做什么
domain=google.com
aRecord=$(dig -t a +short $domain)
ipWhois=$(whois $aRecord | awk '/NetRange/,0'| cut -d\# -f 1)
server=$(host $aRecord)
mxRecord=$(dig -t mx +short $domain)
nsRecord=$(dig -t ns +short $domain)
txtRecord=$(dig -t txt +short $domain)
ptrRecord=$(dig -x ptr +short $aRecord)
whoisRecord=$(whois $domain | awk '/Domain Status|Registrant Organization|Registry Expiry Date|Registration Expiration Date|Registrar:/')
serverType=$(curl -iA . -s $domain | awk '/Server:/ {print $2}')
echo -e "{\n
\t \"domain\" :\n\"$domain\",\n
\t \"aRecord\" :\n\"$aRecord\",\n
\t \"ipWhois\" :\n\"$ipWhois\",\n
\t \"server\" :\n\"$server\",\n
\t \"mxRecord\" :\n\"$mxRecord\",\n
\t \"nsRecord\" :\n\"$nsRecord\",\n
\t \"txtRecord\" :\n\"$txtRecord\",\n
\t \"ptrRecord\" :\n\"$ptrRecord\",\n
\t \"whoisRecord\" :\n\"$whoisRecord\",\n
}" > ./whoisJson/whois$domain.json
答案 0 :(得分:0)
由于您正在尝试使用Ajax,所以我假设您打算在服务器上运行此脚本,并将输出传递给客户端以进行显示?如果是这样,基本的误解是您必须在服务器端实际设置一个Web服务器(使用节点?),该服务器可以接收来自客户端的GET请求,调用您的脚本,收集其输出并将其发送到客户。 Ajax“ just”允许您将请求打包到服务器以完成为您完成的工作,并为您提供答案。
OTOH,您的代码看起来像是您正在尝试将Javascript下载到客户端,然后在客户端执行canYouDIgIt()。这不是Ajax的工作方式(您不能仅在客户端上神奇地在服务器上运行的方法上调用方法,而要在您的下面进行很多检查)。