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

问题描述

所以代码看起来像这样:

<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
?>

.. so在我检查文件是否存在的if语句中,回显不起作用,但是mkdir($ folder)命令成功运行,这对我来说有点令人困惑。如果回显处于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);
        }
    });
}
,

好吧,您正在尝试使用带有JavaScript的Ajax从php服务器中获取值,然后我猜您想在收到该信息时提醒该页面

问题是

results

仅在实际的Ajax请求本身中如此,该请求仅从服务器以字符串形式获取数据,而实际上不执行

如果要在页面上执行代码,则必须在客户端成功调用Ajax上执行,所以

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

然后在服务器端,仅当未设置“文件夹”时才回显JavaScript,

同样在客户端,为了真正执行JavaScript,您可能必须创建一个新的Dom解析器

因此整个php文件基本上是

<script>
function createFolder(folder){
    $.ajax({
    url: "index.php",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>