使用jQuery和&amp ;;制作这些AJAX GET请求的最佳方式是什么? JSON API?

时间:2018-01-13 17:12:28

标签: javascript jquery json ajax api

我在来自不同终端网址的不同网页上输出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>

当前工作流程

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

  • 为前言中的每个帖子设置var-idload-id个自定义参数

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

你会怎样写得更好?

1 个答案:

答案 0 :(得分:0)

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

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/')
});