jQuery的:更新全局变量并重新运行功能

问题描述:

我有了另一个函数嵌套函数结合click事件重新运行与不同的AJAX URL功能:jQuery的:更新全局变量并重新运行功能

function getInternal() { 

     var callUrl = 'https://url.com'; // URL ON LOAD 

     $.ajax({ 
     dataType: "json", 
     url: callUrl, 

     success: function(data) { 

      var obj = data; 

      $(document).ready(function(callUrl) { 
      $("a.dept").click(function() { 
       var filterDept = $(this).attr('id'); 
       callUrl = 'https://url.com/' + filterDept; // URL TO UPDATE 
       getInternal(callUrl); // RUN THIS FUNCTION AGAIN 
      }); 
      }); 

不幸的是,点击事件继续返回相同的数据。它看起来不像callUrl正在更新。

如何更新函数内的全局变量以重新运行?

+2

每次通话时间'getInternal()',你重新设置变量原。在函数外部声明变量。 – sideroxylon

函数的第一行将变量设置为特定值:var callUrl = 'https://url.com';因此,每次运行此函数时,该变量都将设置为'https://url.com'

通过在函数外部移动变量,它将成为全局变量,并且更新callUrl的代码部分将会持续。

这就是说,你的代码是各种各样的混合起来。您有一个AJAX回调中的$(document).ready(),每次调用都会重新定义一个click事件,似乎没有任何事件会被关闭,并且您为getInternal();提供了一个参数,尽管事实上它没有。

是这样的,你在追求什么?

$(document).ready(function() { 
 
    //On click of link, run AJAX call to changing URL (based on clicked link's ID) 
 
    $("a.dept").click(function() { 
 
       var filterDept = $(this).attr('id'); 
 
       var callUrl = 'https://url.com/' + filterDept; 
 
       getInternal(callUrl); 
 
    }); 
 
    }); 
 

 
function getInternal(callUrl) { 
 

 
     $.ajax({ 
 
     dataType: "json", 
 
     url: callUrl, 
 

 
     success: function(data) { 
 

 
      alert("Call made to " + callUrl); 
 
      
 
      } 
 
     
 
     }); 
 
    }

+0

我在ajax成功中嵌套它的原因是onclick需要在ajax调用之后拾取元素。 – beaconhill

+0

对不起,我还没有理解。在每种成功的AJAX回调中声明一个click事件在任何情况下都不太实际。你能解释一下你的目标是什么以及它与我的代码有什么不同? – Santi

+0

由于DOM尚未加载,因此它在回调之外时不起作用。我需要.ready()在Ajax调用之后。 – beaconhill