jQuery:更新全局变量和重新运行函数

时间:2016-07-29 00:19:21

标签: javascript jquery

我有一个函数,它有另一个嵌套的函数,它绑定一个click事件,用另一个ajax URL重新运行该函数:

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

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

如何从函数中更新全局变量以重新运行自身?

1 个答案:

答案 0 :(得分:0)

函数的第一行将变量设置为特定值:@echo off Rem Special thanks goes to Iracus for the color function (-_°) mode con cols=60 lines=20 Title Multi-Ping hosts Tester with Multi-colors by Hackoo set "URLS=URLS.txt" set "LogFile=PingResults.txt" If exist %LogFile% Del %LogFile% call :init echo( call :color 0E "------- Ping Status of Computers hosts -------" 1 echo( ( echo ****************************************************** echo PingTest executed on %Date% @ Time %Time% echo ****************************************************** echo( ) > %LogFile% Setlocal EnableDelayedExpansion for /f "usebackq delims=" %%a in ("%URLS%") do ( for /f "tokens=2 delims=[]" %%b in ('ping -n 1 %%a') do set "ip=%%b" ping -n 1 %%a>nul && set "msg=%%a - !ip! ALive ok" && Call :Color 0A "!msg!" 1 || set "msg=%%a - !ip! Dead failed to respond" && Call :Color 0C "!msg!" 1 echo !msg! >> %LogFile% ) ) EndLocal Start "" %LogFile% pause>nul & exit :init prompt $g for /F "delims=." %%a in ('"prompt $H. & for %%b in (1) do rem"') do set "BS=%%a" exit /b :color set nL=%3 if not defined nL echo requires third argument & pause > nul & goto :eof if %3 == 0 ( <nul set /p ".=%bs%">%2 & findstr /v /a:%1 /r "^$" %2 nul & del %2 2>&1 & goto :eof ) else if %3 == 1 ( echo %bs%>%2 & findstr /v /a:%1 /r "^$" %2 nul & del %2 2>&1 & goto :eof ) exit /b 因此,每次运行此函数时,变量都将设置为var callUrl = 'https://url.com';

通过将变量移到函数之外,它将成为全局变量,并且代码中更新callUrl的部分将保持不变。

话虽这么说,你的代码是各种各样的混淆。您在AJAX回调中有'https://url.com'$( document ).ready()事件在每个调用中都被重新定义,似乎没有关闭,并且您为click提供了参数,尽管事实如此没有。

这就是你想要的东西吗?

getInternal();