私はかなり長い間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 で使用するステートメントに入れることができます (たとえば)。
次の回答を参照してください。