【问题标题】:how to get variable out of function(){ $.get() return variable; } function ? in jquery? [duplicate]如何从 function(){ $.get() return variable 中获取变量; } 功能 ?在jQuery中? [复制]
【发布时间】:2017-05-20 10:44:01
【问题描述】:

我正在尝试从函数中获取变量。该函数内部包含一个$.get() 函数。代码如下:

$(function () {
  var valiable = '';
  function functionName(string) {
      var file = "lang.txt";
      $.get(file, function (txt) {
          var lines = txt.split("\n");
          for (var i = 0, len = lines.length; i < len; i++) {
              if ($.trim(lines[i]) == string) {
                  valiable = lines[i];
              }
          }
      });
      return valiable;
  }

  $('#button').on('click',function () {
   var variable = functionName(string);
   console.log(variable);
   });

});

我正在尝试解析 .txt 文件以获取其内容。

【问题讨论】:

    标签: javascript jquery scope


    【解决方案1】:

    $.get() 是异步的,因此您可以将内容保存到其成功处理程序中的输出变量中。然后,只需从按钮单击处理程序访问此存储的值。在这种情况下,您将执行页面的功能加载。这样做的缺点是点击按钮时数据无法准备好,并且您需要重新加载页面以再次获取数据。

    $(function () {
      var output = '';
    
      function functionName() {
          var file = "lang.txt";
          $.get(file, function(txt) {
              var lines = txt.split("\n");
              output = lines.join("");
          });
      }
      functionName();
    
      $('#button').on('click', function () {
          console.log(output);
      });
    
    });
    

    如果您想在单击按钮时执行文件加载,您可以将成功处理函数(回调)作为参数传递。然后successHandler 函数有一个带有数据的参数,并在$.get() 执行后被调用。因此,您可以在按钮单击侦听器中定义加载的数据应该发生什么。

    $(function () {
      function functionName(successHandler) {
          var file = "lang.txt";
          $.get(file, function(txt) {
              var lines = txt.split("\n");
              var output = lines.join("");
              successHandler(output);
          });
      }
    
      $('#button').on('click', function() {
          functionName(function(data) {
             console.log("this is the data: " + data);
          });
      });
    
    });
    

    【讨论】:

    • 非常感谢它的工作!
    • 完美!你是天才:)
    【解决方案2】:

    该调用是async,您无法从该ajax 调用中以足够快的速度返回值。你应该做的是在你的方法中添加一个callback

    function fn(callback) {
        var value;
        $.get('lang.txt', function(data) {
            ... 
    
            callback(value)
        });
    }
    

    现在您可以将回调附加到方法

    fn(function(value) {
      console.log(value);
    });
    

    【讨论】:

    • ssc-hrep3 感谢您的快速回复代码完美运行!
    猜你喜欢
    • 2012-07-11
    • 2012-08-16
    • 1970-01-01
    • 1970-01-01
    • 2012-07-02
    • 1970-01-01
    • 1970-01-01
    • 2023-04-10
    • 2018-08-06
    相关资源
    最近更新 更多