2010-08-25 42 views
13

Có ai biết hướng dẫn về cách đọc dữ liệu từ tệp phía máy chủ với JS không? Tôi không thể tìm thấy bất kỳ chủ đề về điều này khi tôi google nó. Tôi đã cố gắng sử dụng nhưng nó dường như không hoạt động. Tôi chỉ muốn đọc một số dữ liệu từ một tập tin để hiển thị trên trang. Điều này thậm chí có thể?Đọc tệp phía máy chủ với Javascript

var CSVfile = new File("test.csv"); 
var result = CVSfile.open("r"); 
var test = result.readln(); 
+1

Bạn có đang chạy JS trong một trang web không? Nếu vậy bạn có ý nghĩa gì khi đọc "tệp phía máy chủ", mã script java được thực thi ở phía máy khách (trình duyệt) và cách để lấy tệp từ máy chủ đang thực hiện yêu cầu http. – Jaime

+2

tệp tôi có được lưu trữ trên máy chủ và tập lệnh sẽ chạy khi tải trang. Thậm chí có thể làm điều này không? – shinjuo

+1

Khi những người khác đề cập đến, hãy tìm kiếm AJAX và sử dụng jQuery hoặc MooTools (hoặc một khung công tác khác) để dễ dàng thực hiện điều này. – Jaime

Trả lời

9

Để đạt được điều này, bạn sẽ phải truy xuất tệp từ máy chủ bằng phương thức được gọi là AJAX.

Tôi sẽ xem xét các thư viện JavaScript như Mootools và jQuery. Họ làm cho AJAX sử dụng rất đơn giản.

<html> 
    <head> 
     <script src="https://cdnjs.cloudflare.com/ajax/libs/mootools/1.6.0/mootools-core.min.js"></script> 
     <script type="text/javascript"> 
      //This event is called when the DOM is fully loaded 
      window.addEvent("domready",function(){ 
       //Creating a new AJAX request that will request 'test.csv' from the current directory 
       var csvRequest = new Request({ 
        url:"test.csv", 
        onSuccess:function(response){ 
         //The response text is available in the 'response' variable 
         //Set the value of the textarea with the id 'csvResponse' to the response 
         $("csvResponse").value = response; 
        } 
       }).send(); //Don't forget to send our request! 
      }); 
     </script> 
    </head> 
    <body> 
     <textarea rows="5" cols="25" id="csvResponse"></textarea> 
    </body> 
</html> 

Nếu bạn tải lên đó đến thư mục đó test.csv cư trú tại trên máy chủ web của bạn và tải trang, bạn sẽ thấy nội dung của test.csv xuất hiện trong textarea xác định.

+0

Hãy xem xét sử dụng phiên bản mới hơn của mototools gây ra rằng có một xung đột rất xấu với JQuery bạn có thể sử dụng -> GOXR3PLUS

7

Bạn cần sử dụng AJAX. Với thư viện jQuery mã có thể trông như thế này:

 
$.ajax({ url: "test.csv", success: function(file_content) { 
    console.log(file_content); 
    } 
}); 

hoặc nếu bạn không muốn sử dụng các thư viện sử dụng đối tượng XMLHttpRequest liệu (nhưng bạn tôi có tên gọi khác nhau trên các trình duyệt khác nhau

 
function xhr(){ 
    var xmlHttp; 
    try{ 
    xmlHttp=new XMLHttpRequest(); 
    } catch(e) { 
    try { 
     xmlHttp=new ActiveXObject("Msxml2.XMLHTTP"); 
    } catch(e) { 
     try { 
     xmlHttp=new ActiveXObject("Microsoft.XMLHTTP"); 
     } catch(e) { 
     alert("Your browser does not support AJAX!"); 
     return false; 
     } 
    } 
    } 
    return xmlHttp; 
} 
req = xhr(); 
req.open("GET", "test.cvs"); 
req.onreadystatechange = function() { 
    console.log(req.responseText); 
}; 
req.send(null); 

CẬP NHẬT 2017 có lấy api mới, bạn có thể sử dụng nó như thế này:

fetch('test.csv').then(function(response) { 
    if (response.status !== 200) { 
     throw response.status; 
    } 
    return response.text(); 
}).then(function(file_content) { 
    console.log(file_content); 
}).catch(function(status) { 
    console.log('Error ' + status); 
}); 

the support is pretty good nếu bạn cần hỗ trợ trình duyệt không hỗ trợ API tìm nạp, bạn có thể sử dụng polyfill rằng github created

+8

Cố gắng trả lời hữu ích hơn. Chúng tôi thích nhìn thấy câu trả lời tốt hơn là "truy cập google". – Oded

+2

Tôi sẽ downvote câu trả lời này, nhưng tôi đã đạt đến giới hạn hàng ngày của tôi, vì vậy hãy coi đó là một cảnh báo :-) –

+0

Giải pháp JQuery rất đẹp. – GOXR3PLUS

Các vấn đề liên quan