【问题标题】:Server sends data to client服务器向客户端发送数据
【发布时间】:2015-02-10 04:52:14
【问题描述】:

在我的快速项目中,我希望我的服务器向客户端发送一个 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 的客户端? 谢谢!

【问题讨论】:

    标签: javascript node.js express


    【解决方案1】:

    在您的服务器上,使用 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);
    

    【讨论】:

    • 但是我如何发送我想要显示的页面呢?那里正在使用应该接收数据的客户端脚本
    • 你能解释一下这会做什么吗?
    • 是的,您的页面上有一个全局 javascript 变量 local_data。 Witch 将包含您传递给渲染函数的所有数据。您可以使用它来显示您的页面。
    • 如何通过客户端的javascript访问它?
    • 我的网页显示:local_data ="data2";并且在我运行该功能时不呈现页面。如果我不运行该函数,它仍然会写入 local_data ="data2";在屏幕上,但页面已呈现
    猜你喜欢
    • 2014-09-07
    • 2016-07-21
    • 1970-01-01
    • 1970-01-01
    • 2018-10-19
    • 2015-02-17
    • 2015-12-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多