如果请求已完成并且数据可用,则不会在ajax调用期间执行数据库查询请求

问题描述:

我在我的视图中有一个按钮,当单击此按钮时会触发对数据库数据的ajax请求。然后我将数据显示在我的页面中。我希望能够隐藏数据,如果再次点击该按钮并显示它,如果它再次点击等等。我不想每次点击它时执行新的数据库查询。如果请求已完成并且数据可用,则不会在ajax调用期间执行数据库查询请求

因此,例如,我的要求是这样的:

$.ajax({ 

      url: '../route/button, 
      type: 'get', 
      data: {_method: 'get', _token: token}, 
      success: function (data) { 

      // bla bla get data from DB and insert in div 

     }); 

所以一旦我点击我的资料,然后我再次单击该按钮,我想切换(); div和数据从页面中消失,但如果再次单击,我想再次切换div并显示已存在的数据,而无需再次执行数据库查询。 任何线索?

您必须保存ajax请求中的数据。然后每次点击按钮时,检查是否保存了数据。一个例子见this fiddle

;(function() { 
    var data = null, 
     $output = $('#output'); 
    $output.hide(); 
    $('#button').on('click', function() { 
    if (data === null) { 
     // ajax request 
     data = { 
      foo: 'bar' 
     }; 
     console.log('fetching data'); 
     // populate table with data 
    } 
    $output.toggle(); 
    }); 
})(); 
+0

是的男人,它的工作原理。我正在设置一个变量,但我犯了一些错误。谢谢。 – Chriz74