为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
慕尼黑8549860 2023-10-15 15:42:32
所以代码看起来像这样:<script>function createFolder(folder){    $.ajax({    url: "index.php",    type: "POST",    data: {'folder':folder},    success: function(data) {        console.log("successful post");        }    });}</script><?phpif(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 语句中不起作用?
查看完整描述

2 回答

?
精慕HU

TA贡献1845条经验 获得超8个赞

<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);

        }

    });

}


查看完整回答
反对 回复 2023-10-15
?
富国沪深

TA贡献1790条经验 获得超9个赞

好吧,您正在尝试使用 Ajax 和 JavaScript 从 php 服务器获取值,那么我猜您想在收到页面时发出警报


问题是


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

only 在实际的 Ajax 请求本身中为 true,它仅从服务器获取字符串形式的数据,但并不实际执行它


如果您希望代码在页面上执行,则必须在客户端的 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 } ?>


查看完整回答
反对 回复 2023-10-15
  • 2 回答
  • 0 关注
  • 95 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信