首页 > 解决方案 > 由于 if isset 无法执行函数

问题描述

我正在尝试制作像Monsta FTP这样的网络 ftp 浏览器。目前我正在尝试制作一个将当前目录切换到我单击的目录的功能。

这是它目前的样子:

这就是我现在的样子
PHP (index.php):

<?php
if(isset($_POST['file_name'])) {
    $file_name = $_POST['file_name'];
    ftp_chdir($ftp_conn, $file_name);
    echo "<p>".ftp_pwd($ftp_conn)."<p>";
}

// connect to the FTP server
$ftp_server = "xxxxxxxxx";
$ftp_username = "xxxxxxxxx";
$ftp_userpass = "xxxxxxxxx";
$ftp_conn = ftp_connect($ftp_server, 21) or die("Could not connect to $ftp_server");
if ($ftp_conn === false) {
    echo "Unable connect to the ftp server.<br>";
} else {
    echo "Succesfully connected to the ftp server.<br>";
}

//login to the FTP server
$login = ftp_login($ftp_conn, $ftp_username, $ftp_userpass);
if ($login === true) {
    echo "Succesfully logged in to the ftp server.";
} else {
    echo "Unable to log in to the ftp server.";
}

//get a list of all files and folders
$contents = ftp_nlist($ftp_conn, '/');
echo "<ul>";
for ($i = 0 ; $i < count($contents) ; $i++) {
    echo "<li><a href=\"#\" onclick=\"post(this.id);\" id=\"".$contents[$i]."\">".$contents[$i]."</a></li>";
}
echo "</ul>";

// close connection
ftp_close($ftp_conn);
?>
<!DOCTYPE html>
<html>
<head>
    <title>FTP file menager</title>
</head>
<body>
<script src="js/jquery.js"></script>
<script src="js/functions.js"></script>
</body>
</html>

JS(functions.js):

function post(vally) {
    var name = vally;
    $.post('index.php', {file_name:name}, function(data) {});
    console.log('posted');
}

当我单击具有文件夹名称的链接之一时,我在控制台中得到“发布”,这意味着 JQuery(我正在使用从jquery.com下载的 JQuery 3.2.1 )发布了数据,但我没有收到任何警报或来自 PHP 的回声。我尝试if ()在与 ftp 服务器建立连接之前和之后放置,但我仍然一无所获。

有谁知道为什么我的代码不起作用?

标签: javascriptphpjqueryftp

解决方案


尝试删除ftp_close($ftp_conn);,因为它会在加载 js 之前关闭 ftp 连接,因此 php 无法再执行 ftp 命令,除非您在isset().


推荐阅读