【发布时间】:2011-10-08 12:06:05
【问题描述】:
我有一个目录树结构。每次单击文件夹时,jQuery.ajax 都会触发并打开一个 jquery.php 文件。
这是我触发 jQuery.ajax 的 javascript 代码:
jQuery('.directory').live('click',function() {
// Get dir name clicked
var dir = jQuery(this).find('span').html();
// Update dir list
getHTML('getDirList',dir, function(html){
jQuery('#fileDirList').html(html);
});
// Update file list
getHTML('getRowList',dir, function(html){
jQuery('#fileList').html(html);
});
});
function getHTML(instance, dir, callback) {
jQuery.ajax({
type: "POST",
url: "../wp-content/plugins/wp-filebrowser/jquery.php",
dataType: 'html',
data: {instance: instance, dir: dir},
success: function(html){
callback(html);
},
error: function(e) {
callback('[Error] ' + e);
}
});
}
在这个文件中,我的 jQuery.php 文件中有以下代码:
<?php
class jQueryFactory {
/**
* Get and output directory list
*/
public function getDirList() {
echo parent::getDirList();
}
/**
* Get images and list them in row format
*/
public function getRowList() {
echo parent::getRowList();
}
/**
* Create new directory
*/
function createDir() {
if(isset($_POST['new_dir'])) {
$result = parent::createDir($_POST['new_dir']);
echo $result;
}
}
/**
* Delete file
*/
function deleteFile() {
if(isset($_POST['file'])) {
$file = $_POST['file'];
parent::deleteImage($file);
}
}
}
// Does this work?
if(!isset($factory))
$factory = new jQueryFactory();
switch($_POST['instance']) {
case 'deleteImage' : $factory->deleteFile(); break;
case 'createDir' : $factory->createDir(); break;
case 'getDirList' : $factory->getDirList($dir); break;
case 'getRowList' : $factory->getRowList($dir); break;
}
?>
我的问题是:每次点击都必须触发这个功能吗? 或者我可以触发一次,然后在同一个用户会话中调用各种函数吗?
【问题讨论】:
-
不确定你的意思。
jQueryFactory是做什么的?您的意思是在 PHP 中跨多个 Ajax 调用持久化变量吗? -
@Pekka - 我想在导航树结构时坚持
jQueryFactory。但我不确定这是否可能? -
由于对象在脚本执行结束时死亡,不,您正在寻找的东西是不可能的。
-
@rodneyrehm,这就是我想知道的。谢谢:)