我已经使用 jQuery 很长时间了,但是我从来没有学过 AJAX,所以我来了..
我们有这个代码:
$('body').load('hello.txt');
很简单,现在假设我有多个文本文件(我不知道它们的名字)我想加载,
我可以这样做吗?也许我需要循环所有文本文件并以某种方式加载它们?
提前致谢
假设您在特定位置的服务器中有文本文件,您可以执行以下操作:
HTML 标记:
<div id="fileList">
here list of files will be loaded so that user can select which one to load
<div>
<div id="file-content">
content of selected file will be loaded here
<div>
jQuery部分:
$.ajax({
url : "FileServer/GetFileNames", // this is just a url that is responsible to return files list
success : function(data){
//here a JSON data including filenames expected
$.each(data,function(i,item){
var $fileHolder = $("<div></div>");
$fileHolder.attr("filename",item.filename).click(function(){
$("#file-content").load($(this).attr("filename"));
}).html(item.filename).appendTo("#fileList");
});
}
});
预期的 JSON 结构
[
{
filename : "text1.txt"
},
{
filename : "text2.txt"
},
{
filename : "text3.txt"
}
]
在服务器端实现文件列表取决于您。
出于明显的安全原因,Javascript 无法访问本地文件系统。这是不可能的。
除非您尝试遍历服务器上的文件,在这种情况下,您无论如何都不想使用 jQuery,而是使用 ASP.NET 或 PHP 或您正在使用的任何框架之类的东西。
更新
试试这个
var files;
$.ajax({
url: "http://homepage/folder",
success: function (txt) {
files = txt.split('<A href="');
}
});
var fList = new Array();
$(files).each(function () {
if (this.indexOf('.txt') > -1) {
fList.push(this);
}
});
for (i = 0; i < fList.length; i++) {
fList[i] = fList[i].split('">')[0];
fList[i] = fList[i].replace('"');
}
for (i = 0; i < fList.length; i++) {
$('#idLoadHere').load(fList[i]);
}
*您可以使用原始 HTML 或将其放入var
JavaScript 使用的语句中(例如)。
请参阅以下答案: