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 } ?>
因此代码如下所示:
<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 } ?>