jQuery 文件树始终使用根文件夹作为选定文件夹
jQuery File Tree always uses root folder as selected folder
我在使用 jQuery 文件树插件显示数据时遇到问题。不管我用什么'root',它总是用'\'显示C盘的内容!
我正在使用 aspx(后面有我未使用的代码)和母版页。
<div class="col-md-12" id="divAIMDocs">
</div>
<script>
function openFile(file) {
// do something with file
alert(file);
}
$(document).ready(function () {debugger
$('#divAIMDocs').fileTree({
root: decodeURI(uploadFolder),
script: '../assets/vendor/jquery_FileTree/connectors/jqueryFileTree.aspx',
expandSpeed: 1000,
collapseSpeed: 1000,
multiFolder: false
}, function(file) {
openFile(file);
});
});
</script>
我在 venodr 的 js 文件(下方)以及 'connector' 脚本中添加了一个断点:
$(this).each( function() {
function showTree(c, t) {debugger <-- this shows 't' as '\'
$(c).addClass('wait');
在连接器脚本中,jqueryFileTree.aspx:
string dir;
if(Request.Form["dir"] == null || Request.Form["dir"].Length <= 0) <-- always null
dir = "/";
else
dir = Server.UrlDecode(Request.Form["dir"]);
然后我尝试将 'root' 值硬编码为 'D:\Some\Folder':
$(document).ready(function () {debugger
$('#divAIMDocs').fileTree({
root: 'D:\Some\Folder\',
script: '../assets/vendor/jquery_FileTree/connectors/jqueryFileTree.aspx',
...
我在函数 showTree 中看到参数 't' 现在实际上看到 'D:\Some\Folder' 但连接器仍然说 Request.Form["dir"] 为空并继续显示 C 驱动器的内容.
我这里哪里做错了?
正如我所想,问题出在 Request.Form["dir"]。我找到了 this 篇文章,它指出了一个我没有想到的问题。这是由于使用了 .NET 的 FriendlyURL 功能(即与 jQuery 文件树插件无关)。
”此示例中的 HTML 表单旨在 post 到 Receiver.aspx,友好 URL 将接受包含文件扩展名的请求并发出 HTTP 301 - 已移动永久响应,指示浏览器对不带文件扩展名的同一资源发出新的 (GET) 请求。"
解决方案是注释掉 RoutConfig.cs 文件中的以下行:
public static void RegisterRoutes(RouteCollection routes)
{
var settings = new FriendlyUrlSettings();
//settings.AutoRedirectMode = RedirectMode.Permanent;
routes.EnableFriendlyUrls(settings);
}
原始 POST 被后续 GET 覆盖,数据丢失。
Request.Form 仅当通过表单 POST.
加载页面时才会填充
我在使用 jQuery 文件树插件显示数据时遇到问题。不管我用什么'root',它总是用'\'显示C盘的内容!
我正在使用 aspx(后面有我未使用的代码)和母版页。
<div class="col-md-12" id="divAIMDocs">
</div>
<script>
function openFile(file) {
// do something with file
alert(file);
}
$(document).ready(function () {debugger
$('#divAIMDocs').fileTree({
root: decodeURI(uploadFolder),
script: '../assets/vendor/jquery_FileTree/connectors/jqueryFileTree.aspx',
expandSpeed: 1000,
collapseSpeed: 1000,
multiFolder: false
}, function(file) {
openFile(file);
});
});
</script>
我在 venodr 的 js 文件(下方)以及 'connector' 脚本中添加了一个断点:
$(this).each( function() {
function showTree(c, t) {debugger <-- this shows 't' as '\'
$(c).addClass('wait');
在连接器脚本中,jqueryFileTree.aspx:
string dir;
if(Request.Form["dir"] == null || Request.Form["dir"].Length <= 0) <-- always null
dir = "/";
else
dir = Server.UrlDecode(Request.Form["dir"]);
然后我尝试将 'root' 值硬编码为 'D:\Some\Folder':
$(document).ready(function () {debugger
$('#divAIMDocs').fileTree({
root: 'D:\Some\Folder\',
script: '../assets/vendor/jquery_FileTree/connectors/jqueryFileTree.aspx',
...
我在函数 showTree 中看到参数 't' 现在实际上看到 'D:\Some\Folder' 但连接器仍然说 Request.Form["dir"] 为空并继续显示 C 驱动器的内容.
我这里哪里做错了?
正如我所想,问题出在 Request.Form["dir"]。我找到了 this 篇文章,它指出了一个我没有想到的问题。这是由于使用了 .NET 的 FriendlyURL 功能(即与 jQuery 文件树插件无关)。
”此示例中的 HTML 表单旨在 post 到 Receiver.aspx,友好 URL 将接受包含文件扩展名的请求并发出 HTTP 301 - 已移动永久响应,指示浏览器对不带文件扩展名的同一资源发出新的 (GET) 请求。"
解决方案是注释掉 RoutConfig.cs 文件中的以下行:
public static void RegisterRoutes(RouteCollection routes)
{
var settings = new FriendlyUrlSettings();
//settings.AutoRedirectMode = RedirectMode.Permanent;
routes.EnableFriendlyUrls(settings);
}
原始 POST 被后续 GET 覆盖,数据丢失。
Request.Form 仅当通过表单 POST.
加载页面时才会填充