【发布时间】:2017-03-06 19:31:17
【问题描述】:
我使用模块 Express 在 NodeJs 上创建了一个服务器。现在我想通过单击一个按钮来实现来自带有$.ajax 的html页面的请求。我想从服务器获取json格式或者文本格式的数据,没关系,但是不行。为什么?
另外,为什么 ajax 请求不应该重新加载 html 页面?
服务器部分:
var express = require('express');
var fs = require('fs');
var request = require('request');
var cheerio = require('cheerio');
var app = express();
var url = require("url");
app.get('/scrape', function (req, res) {
console.log("Someone made request");
url = 'http://spun.fkpkzs.ru/Level/Gorny';
request(url, function (error, response, html) {
if (!error) {
console.log("Inside request");
var $ = cheerio.load(html);
var date, waterlevel;
var json = {
time: "",
waterlevel: ""
};
json.time = $("#waterleveltable td.timestampvalue").first().text()
json.waterlevel = $("#waterleveltable td.value").first().text()
res.send(json);
console.log(json);
}
})
})
app.listen('8081')
console.log('Server started on port 8081');
exports = module.exports = app;
这是我的 HMLT 请求:
<form>
<!-- button for sending a request to server-->
<button id="button12">Scrape water height</button>
</form>
<div id="response21">
Print
<!-- div for displaying the response from server -->
</div>
<p id="p1">___!</p>
<script>
$(document).ready(function () {
$("#button12").click(function () {
console.log("Get sent.")
// Json request
$.get("http://localhost:8081/scrape", function (data)
{
console.log("Data recieved" + data);
$("#response21")
.append("Time: " + data.time)
.append("Waterlevel: " + data.waterlevel);
}, "json");
});
});
【问题讨论】:
-
您的 HTML 页面是否也在
localhost:8081上加载? -
我只是在浏览器(Chrome)中打开 HTML 页面
-
是的,您浏览器中的地址是什么?
-
为什么不把按钮改成链接呢。它包裹在表单标签上的事实使它表现得像一个常规的表单操作按钮!
-
我修复了在
onclickfunction 中添加event.preventDefault()重新加载的问题。
标签: javascript jquery html ajax node.js