服务器向客户端发送数据

时间:2014-12-11 16:10:10

标签: javascript node.js express

在我的快递项目中,我希望我的服务器将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的客户端? 谢谢!

1 个答案:

答案 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);