如何下载文本文件并在jQuery中存储为字符串

Ric*_*ich 0 javascript ajax

我有一组文本文件,表示我想要使用JavaScript应用程序下载的第三方数据表.他们看起来像这样:

col1 col2 .. coln
vala valb .. valz
valA valB .. valZ
etc..
Run Code Online (Sandbox Code Playgroud)

我一直在尝试使用jQuery来做到这一点.我已经能够使用$ .load,但我不想将数据存储在DOM中,而是我想将它解析为一个对象.每当我尝试使用ajaxy方法时,我都会收到错误,我不明白.例如:

var myData;
$.ajax({
    type: 'GET',
    url: $(this).attr('source'),
    dataType: 'html',
    success: function(data) {
        myData = data;
    }
});
alert(myData);
Run Code Online (Sandbox Code Playgroud)

给了我一个undefined价值myData.任何建议,将不胜感激.

Alx*_*ndr 5

要使该代码工作,事件需要是syncrounus,换句话说,在$ .ajax调用中设置async:false.问题出现是因为ajax通常是异步的,这意味着当您执行警报时,请求可能会或可能没有完成.通常情况下,它不会导致获取页面所需的时间比执行函数调用所需的时间长.因此,通过设置async:false,您可以告诉jquery(和ajax-handler)在尝试提醒数据之前等待页面加载完毕.实现相同效果的另一种方法是执行以下操作:

var myData;
function fin(data) {
    myData = data;
    alert(myData);
}
$.ajax({
    type: 'GET',
    url: $(this).attr('source'),
    dataType: 'html',
    success: fin
});
Run Code Online (Sandbox Code Playgroud)

这种方法可能比将async设置为false更好,因为它不会使浏览器在等待加载页面时挂起.但是,异步编程并不容易学习,因此许多人会发现使用async更容易:false.