jQuery加载文本文件数据

时间:2011-06-14 03:37:41

标签: javascript jquery

我正在尝试使用外部脚本文件中的$ .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不再显示。我不太了解该函数如何工作以了解它为什么没有像我预期的那样做。我想要它做的就是将文本数据加载到变量中,以便我可以使用它。任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:16)

get是异步的意思是它调用服务器并继续执行其余的代码。这就是你有回调方法的原因。无论你打算如何处理返回数据,都要在回调方法(你已经发出警报)中进行。

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

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

  2. $.ajaxasync: false一样如下所示。

  3. 请查看上面提到的代码和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);
    

答案 1 :(得分:5)

$ .get函数是异步的。您需要对回调函数中返回的数据执行任何操作。您可以将该函数移动到不内联以清理代码。

    function parseData(data){
        //do something with the data
        alert("data is: " + data);
    }

    $.get("http://localhost/webpath/graphing/sample_data.txt",parseData);