问题描述
所以代码看起来像这样:
<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>