如何从服务器返回的JSON数据创建JavaScript对象

Ver*_*onW 0 javascript ajax jquery

我需要帮助,我想创建一个从AJAX请求返回一个对象的函数,所以我可以从服务器上的数据创建一个新对象,如下所示:

var foo = bar('api.php?x=y');
Run Code Online (Sandbox Code Playgroud)

该函数应该将查询字符串作为参数,服务器将数据作为JSON返回.

你能告诉我如何使用jQuery做这个,你有什么想法/例子吗?

我会扩展我的问题,因为我觉得我做错了.我正在尝试基于实时数据(股票报价)创建Web应用程序,因此它必须不断地从服务器请求更新的信息.当应用程序初始化时,第一步是从要包含的股票中获取静态数据(例如股票代码和发行人),我认为最好的方法是在服务器上安装一个数据库,并使用一个API来执行查询并将选定的库存数据作为JSON返回.下一步是向服务器上的另一个API发出请求,该请求返回所选股票的实时数据(例如价格和交易量),当返回完整数据时,使用模板引擎将其呈现为html.然后,应用程序必须在某个时间间隔内不断调用第二个API以更新实时数据并再次渲染.此外,您应该能够选择新的股票并重新开始流程.

我认为构建这样的应用程序的最佳方法是将数据放在一个自定义对象中,该对象有自己的方法以便稍后修改数据(例如排序和过滤),所以如果foo我的对象有库存数据我可以做类似的东西foo.sort(),或者类似于foo.render()创建数据的html表示的东西.这就是为什么我认为最好的方法是从AJAX调用返回的数据创建一个对象.你能否告诉我这是否是构建这样的应用程序的正确方法,还是指向正确的方向?

谢谢

Tim*_*ean 6

根据定义,AJAX是异步的,因此它不适合您的问题.我建议使用带有回调的jQuery.ajax(参见参考资料):

$.ajax({
  url: 'api.php?x=y',
  dataType: 'json',
  success: function (foo) {
    // Do stuff here using 'foo'
  }
});
Run Code Online (Sandbox Code Playgroud)

  • @KooiInc即使XHR也不完全准确,因为大量此类请求返回JSON或其他格式,而不是XML.(我认为我们应该开始称它为FSSRWP:从服务器获取资料而不重新整页.它的发音为"fizzerwhip".) (3认同)

rai*_*7ow 5

如果JSON字符串是服务器响应的内容,那么很容易将它转换为JS-object而只需...

var resp_object = JSON.parse(response);
Run Code Online (Sandbox Code Playgroud)

  • 你甚至不需要这样做,假设使用jQuery(根据问题的标签),因为jQuery Ajax方法自动解析JSON. (4认同)

Dav*_*vid 5

你在你的方法中同步思考。

这意味着您认为您的函数调用“bar('api.php?x=y')”应该立即返回检索到的数据/对象。这样做的缺点是浏览器中的代码执行在等待答案时被阻止。

为了克服这个问题,您需要创建一个异步回调处理程序(使用“jQuery.ajax”时的“成功”处理程序),正如 user595228 之前指出的那样。呈现返回信息的代码将进入此处理程序。

对于如何构建代码的问题,这取决于您获得的数据的复杂程度以及您在应用程序中使用它的频率。如果它很复杂并且在多个地方使用,那么创建一个具有辅助函数的数据对象可能是有意义的,以避免代码重复并将与数据相关的代码放在一个地方。如果您只将它们呈现在一个地方,并且您所做的唯一一件事就是简单的排序和显示,那么我会将该逻辑放在一个简单的函数中,以降低复杂性。