在我的快递项目中,我希望我的服务器将JSON对象发送到客户端。客户端使用脚本来显示它收到的数据,因此我不想直接在屏幕上看到从服务器发送的数据,我希望它首先通过javascript。 我尝试了很多方法来发送任何数据,非成功:
客户端:
$.get('http://localhost:1337/', {mydata: 'content'}, function(response){
console.log(response);
});
或
$.ajax({
url: 'http://localhost:1337/',
data: {
mydata: "content"
},
dataType: 'json',
success: function (json) {
console.log(json);
},
error: function (jqXHR, error, errorThrown) {
console.log(error);
},
type: 'GET'
});
服务器:
app.get('/', function (req, res) {
res.render('main',{data:'text'})
});
或
app.get('/', function (req, res) {
res.render('main','text2')
});
有没有办法将数据发送到首先发送到已发送页面中的javascript的客户端? 谢谢!
答案 0 :(得分:0)
在您的服务器上,使用res.json({data:'text'});
代替res.render(...)
发送json。这应该可以解决问题。
更新:
如果要构建具有多个ajax请求的单个页面应用程序,则应使用不同的路由。一个将发送页面,另一个将发送数据。
但是,如果您的应用程序小而简单,您可以继续执行您所做的操作,但通过javascript变量而不是ajax请求获取数据。对于你的模板,你必须做那样的事情(假设它是玉):
script(type='text/javascript')
var local_data =!{JSON.stringify(data)};
该页面将使用以下HTML呈现:
<script type="text/javascript">
var local_data = {"data":"text"};
</script>
您在脚本中可以执行以下操作:
//Your javascript
function displayPage(data){
//display logic here
console.log(data);
}
displayPage(local_data);