【问题标题】:jQuery to load text file datajQuery加载文本文件数据
【发布时间】:2011-06-14 12:04:23
【问题描述】:

我正在尝试使用外部脚本文件中的 $.get() 函数从服务器上的文本文件加载数据。我的代码如下:

  /* 
   * Load sample date
   */
  var stringData;
  $.get("http://localhost/webpath/graphing/sample_data.txt", function(data){
      stringData = data;
      //alert("Data Loaded: " + stringData);
      });
  //Split values of string data
  var stringArray = stringData.split(",");
  alert("Data Loaded: " + stringData);

当我在 $.get() 函数中时,我可以看到 stringData var 得到很好的填充,并且对 alert 的调用确认它包含来自示例文本文件的数据。但是,当我离开 $.get() 函数时, stringData var 不再显示。我对函数的工作原理知之甚少,无法知道为什么它没有按我预期的那样工作。我想要做的就是将文本数据加载到一个变量中,以便我可以使用它。任何帮助表示赞赏。

【问题讨论】:

    标签: javascript jquery


    【解决方案1】:

    get 是异步的,这意味着它会调用服务器并继续执行其余代码。这就是为什么你有回调方法。无论您打算对返回数据做什么,都在回调方法(您放置警报的地方)中执行。

    get、post 都是异步的。您可以使用

    进行同步调用
    1. 在代码中的任何位置使用$.ajaxSetup({ async: false });。这会影响代码中的所有 ajax 调用,所以要小心。

    2. $.ajaxasync: false 例如如下所示。

    查看下面的代码和上面提到的 API 文档链接来解决您的问题。

      /* 
       * Load sample date
       */
      var stringData = $.ajax({
                        url: "http://localhost/webpath/graphing/sample_data.txt",
                        async: false
                     }).responseText;
    
      //Split values of string data
      var stringArray = stringData.split(",");
      alert("Data Loaded: " + stringData);
    

    【讨论】:

    • 这就是我注意到的,它只将它们设置在函数内部。我会阅读更多关于它的信息。感谢 Lobo 的提示。
    • @kingrichard2005 欢迎您。我刚刚添加了一些可能有帮助的代码 sn-p。
    • 太棒了,这对我帮助很大。
    • 我最终使用了这个。谢谢:)
    【解决方案2】:

    $.get 函数是异步的。您需要对回调函数中返回的数据进行任何处理。您也可以将该函数移至不内联以清理代码。

        function parseData(data){
            //do something with the data
            alert("data is: " + data);
        }
    
        $.get("http://localhost/webpath/graphing/sample_data.txt",parseData);
    

    【讨论】:

    • 谢谢乔,我按照您的建议继续分离功能。更容易阅读。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-16
    • 1970-01-01
    • 2014-01-09
    • 1970-01-01
    • 2016-10-02
    • 2018-12-19
    • 1970-01-01
    相关资源
    最近更新 更多