【问题标题】:What's the optimal way of making these AJAX GET requests with jQuery & JSON API?使用 jQuery 和 JSON API 发出这些 AJAX GET 请求的最佳方式是什么?
【发布时间】:2018-01-13 17:12:27
【问题描述】:

我在来自不同端点 url 的不同页面上输出 API 数据,即。 https://api.server.com/firsthttps://api.server.com/second

代码正在运行,但它似乎非常多余,我相信有更好的表达方式,更优化和更快:

var $rubys = $('#rubys');

$(function () {
   $('#loading-rubys').show();
   $.ajax({
       type: 'GET',
       url: 'https://api.server.com/first/',
       success: function(rubys) {
           $.each(rubys, function(i, ruby) {

$rubys.append('$'+parseFloat(ruby.price).toFixed(2)+' | 
$'+parseFloat(ruby.attribute).toFixed(0));
           });
       },
       complete: function(){
       $('#loading-rubys').hide();
       }
   })
});    

var $emeralds = $('#emeralds');

$(function () {
   $('#loading-emeralds').show();
   $.ajax({
       type: 'GET',
       url: 'https://api.server.com/second/',
       success: function(emeralds) {
           $.each(emeralds, function(i, emerald) {

$emeralds.append('$'+parseFloat(emerald.price).toFixed(2)+' | 
$'+parseFloat(emerald.attribute).toFixed(0));
           });
       },
       complete: function(){
       $('#loading-emeralds').hide();
       }
   })
});   

以下内容:

var $rubys = $('#rubys');
$('#loading-rubys').show();

使用 YAML front-matter (Jekyll) 为每个帖子页面设置如下:

---
title: Post about Ruby
var-id: rubys
load-id: loading-rubys
---

并以 HTML 格式输出:

 <div id="{{ page.var-id }}">   
 <div id="{{ page.load-id }}">
     <img src="/assets/img/loading.svg"/>
 </div>
 </div>

当前工作流程

所以基本上每当我创建一个新帖子时,我:

  • 在front-matter中为每个帖子设置var-idload-id自定义参数

  • 创建一个新函数以包含这些函数并向相应的 url 发出新的 GET 请求,即。 https://api.server.com/third/https://api.server.com/fourth/

如何写得更好?

【问题讨论】:

标签: javascript jquery json ajax api


【解决方案1】:

这样的事情可能会有所帮助。

function getGems(gems,gemsURL) {
var $gems = $('#'+gems);
$('#loading-'+gems).show();
   $.ajax({
       type: 'GET',
       url: gemsURL,
       success: function(data) {
           $.each(data, function(i, v) {
               $gems.append('$'+parseFloat(v.price).toFixed(2)+' | 
               $'+parseFloat(v.attribute).toFixed(0));
           });
       },
       complete: function(){
       $('#loading-'+gems).hide();
       }
   });
}
$(function () {
    getGems('rubys','https://api.server.com/first/');
    getGems('emeralds','https://api.server.com/second/')
});

【讨论】:

  • 是的,非常完美!完全按预期工作。今天学到了很多,再次感谢@PeterDarmis。
猜你喜欢
  • 2017-04-12
  • 2010-11-03
  • 1970-01-01
  • 1970-01-01
  • 2017-10-04
  • 1970-01-01
  • 2012-04-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多