PHP echo javascript 在 if 语句中不起作用

PHP echo javascript doesnt work in if statement

因此代码如下所示:

<script>
function createFolder(folder){
    $.ajax({
    url: "index.php",
    type: "POST",
    data: {'folder':folder},
    success: function(data) {
        console.log("successful post");
        }
    });
}
</script>

<?php
if(isset($_POST["folder"])){
    $folder = $_POST["folder"];
    if(!file_exists($folder)) {
        mkdir($folder);                         <--- this code runs
        echo '<script>alert("qwe")</script>';   <--- this code doesnt run 
    }
    else {
        echo '<script>alert("qwer")</script>';  <--- this code doesnt run
    }
    echo '<script>alert("qwert")</script>';     <--- this code doesnt run 
}
echo '<script>alert("qwerty")</script>';        <--- this code runs
?>

..所以在我检查文件存在的 if 语句中,echo 不起作用,但是 mkdir($folder) 命令成功运行,这让我有点困惑。为什么 echo 在 if 语句中不起作用?

只有将 <script> 标签放入 DOM 元素的 HTML 中,它们才会被执行。这不会自动发生,您需要在 success 函数中完成。

function createFolder(folder){
    $.ajax({
        url: "index.php",
        type: "POST",
        data: {'folder':folder},
        success: function(data) {
            console.log("successful post");
            $("#somediv").html(data);
        }
    });
}

好的,您正在尝试使用 Ajax 和 JavaScript 从 php 服务器获取值,那么我猜您想在收到页面时提醒页面

问题在于

if(isset($_POST["folder"]))

Only 在实际的 Ajax 请求本身中为真,它只从服务器获取数据作为字符串,但并不实际执行它

如果你想让代码在页面上执行,你必须在客户端的 Ajax on success 调用上执行,所以

<script>
function createFolder(folder){
    $.ajax({
    url: "index.php",
    type: "POST",
    data: {'folder':folder},
    success: function(data) {
        document.body.innerHTML+=data
         // Or maybe data.responseTezt or something idk 
        // Look up in the API how to get the text content
        console.log("successful post");
        }
    });
}
</script>

然后在服务器端只回显 JavaScript 如果没有设置“文件夹”,

同样在客户端,为了真正执行你 JavaScript 你可能需要制作一个新的 Dom 解析器

所以整个 php 文件基本上是

<?php
if(isset($_POST["folder"])) {
    //All of your other code
} else {

?>
<!--all of your HTML code-->
<script>
function createFolder(folder){
    $.ajax({
    url: "index.php",
    type: "POST",
    data: {'folder':folder},
    success: function(data) {

      
         // Or maybe data.responseTezt or something idk 
        // Look up in the API how to get the text content
        var dp= new DOMParser()
        var doc=dp.parseFromString(data,"text/html")
        Array.from(doc.children).forEach(t=>
            document.body.appendChild(t)
        )
  
        console.log("successful post");
        }
    });
}
</script>
<?php } ?>