使用javascript读取文件

时间:2015-02-24 03:54:52

标签: javascript jquery html

我正在尝试使用JQuery读取和解析文本文件,而我正在使用的代码似乎出错了。

//Attempt 6
alert("Test Alert 9"); //js file does load into index.html
$.get( "exchanges.txt",
    function( data ) {
        //idk what the following two lines do, I got them from:
        //http://api.jquery.com/jquery.get/
  $( ".result" ).html( data );
  alert("check it");
    })
    //should execute if works?
    .done(function() {
        alert( "second success" );
    })
    //should execute if any error
    .fail(function() {
        alert( "error" );
    })
    .always(function() {
        alert( "finished" );
    });

以下提醒打印:

  1. “Test Alert 9”
  2. “错误”
  3. “已完成”
  4. 我的问题: 有没有办法检查错误是什么? 和/或有谁知道错误可能是什么?

    编辑:为了澄清,exchanges.txt文件与js文件位于同一文件夹中

    编辑:已更新以向控制台抛出错误。错误打印:

     XMLHttpRequest cannot load      file:///C:/Users/Invictus/Documents/GitHub/BTCExchangesMaterialize/exchanges.txt. Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https, chrome-extension-resource.
    

    通过将exchanges.txt移动到主文件夹而不是js /文件夹来修复此错误。

    新错误:

        XMLHttpRequest cannot load 
    file:///C:/Users/Invictus/Documents/GitHub/BTCExchangesMaterialize/exchanges.txt.
    Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https, chrome-extension-resource.jquery-2.1.1.min.js:4 n.ajaxTransport.k.cors.a.crossDomain.sendjquery-2.1.1.min.js:4 n.extend.ajaxjquery-2.1.1.min.js:4 n.each.n.(anonymous function)exchangesParser.js:3 (anonymous function)
    

2 个答案:

答案 0 :(得分:0)

fail函数中,传递response。然后您可以使用响应对象。检查浏览器的控制台(开发人员工具)

 .fail(function( response) {
        console.log("my error response is",response);
        alert( "error" );
    })

答案 1 :(得分:0)

$.get是$ .ajax的缩写,其中一些设置已预先启用。 $ .get的签名是:

$.get([String] url, [Object|String] urlparams, [Closure] callback);

  在AJAX查询成功后,

callback已经过了。

如果您计划使用jQuery promise方式,则省略成功回调,并使用其承诺方法.done().fail().always()

成功回拨方式

$.get( "exchanges.txt", function( data ) {
    $( ".result" ).html( data );
    alert("checked it");
});

承诺方式

$.get( "exchanges.txt")
.done(function( data ) {
    $( ".result" ).html( data );
    alert("checked it");
})
.fail(function() {
    alert( "error" );
})
.always(function() {
    alert( "finished" );
});

可以看出,promises在处理程序上更具体,因为你可以调用一个函数获得更多的点,这是因为$.get(如前所述)是{{1}的缩写。 }。看一下$.ajax电话已展开至$.get

$ .ajax Way

$.ajax

请记住,当使用$.ajax({ url: "exchances.txt", success: function(data){ $(".result").html(data); alert("checked it"); }, error: function(response){ alert("error"); }, complete: function(response){ alert("done"); }, }); 引用它时,AJAX请求无法完成本地文件,您应该通过http(apache,node),ftp或任何其他您想要的协议访问它们,但永远不要在{ {1}}

了解更多:

jQuery promises
jQuery ajax