Javascript 在PHP中调用自定义JS警报

Javascript 在PHP中调用自定义JS警报,javascript,php,alert,Javascript,Php,Alert,我使用自定义警报javascript。我想在php中调用这个javascript。我得到了一个基本的警报,但我无法让自定义警报工作 这个代码有效。如果我的文件路径为空,它将打开一个警报窗口 <?php $albums_json_file1 = site_path . DIRECTORY_SEPARATOR . 'users' . DIRECTORY_SEPARATOR . $username . DIRECTORY_SEPARATOR . 'main.json'; if (!e

我使用自定义警报javascript。我想在php中调用这个javascript。我得到了一个基本的警报,但我无法让自定义警报工作

这个代码有效。如果我的文件路径为空,它将打开一个警报窗口

    <?php

$albums_json_file1 = site_path . DIRECTORY_SEPARATOR . 'users' . DIRECTORY_SEPARATOR . $username . DIRECTORY_SEPARATOR . 'main.json';
 if (!empty($albums_json_file1))

 echo "<script type='text/javascript'>alert('message')</script>"
 ?>

您的html正在从上到下加载

swal()
的声明移动到标题,以便可以在正文中的任何位置使用

因此,您的PHP回音可能在您声明
swal()之前

示例:

<script>swal('Does not work');</script>
<script>
var swal = function(txt){
    alert(txt);
}
</script>
<script>swal('Works');</script>
swal(“不工作”);
var swal=函数(txt){
警报(txt);
}
swal(“工程”);

原因
alert()有效是因为它在整个文档中都有效。

您的html是从上到下加载的

swal()
的声明移动到标题,以便可以在正文中的任何位置使用

因此,您的PHP回音可能在您声明
swal()之前

示例:

<script>swal('Does not work');</script>
<script>
var swal = function(txt){
    alert(txt);
}
</script>
<script>swal('Works');</script>
swal(“不工作”);
var swal=函数(txt){
警报(txt);
}
swal(“工程”);

原因
alert()有效是因为它在整个文档中都有效。

在第一个示例中,您总是会收到一个警报,因为您编写它的方式,字符串永远不会为空。您应该检查它是否创建了有效的文件路径,而不是检查字符串是否为空(它永远不会为空)。使用
文件\u exists()
而不是
empty()

我敢打赌,问题在于您生成的文件路径不正确


编辑-我不允许发表评论,但作为对另一个答案的回应-将JS放在标题中是不好的做法。它会降低页面加载速度。如果这确实是一个问题,那么您应该在页脚中放置一个onload调用,并将所有javascript放在其中

window.onload = function(){
    // Put codes here
};
以便在执行任何脚本之前加载页面内容


这就是说,这不是您遇到的问题,因为您说将
swal()
调用手动放入主体中可以工作。

在第一个示例中,您将始终收到警报,因为您编写它的方式,字符串永远不会为空。您应该检查它是否创建了有效的文件路径,而不是检查字符串是否为空(它永远不会为空)。使用
文件\u exists()
而不是
empty()

我敢打赌,问题在于您生成的文件路径不正确


编辑-我不允许发表评论,但作为对另一个答案的回应-将JS放在标题中是不好的做法。它会降低页面加载速度。如果这确实是一个问题,那么您应该在页脚中放置一个onload调用,并将所有javascript放在其中

window.onload = function(){
    // Put codes here
};
以便在执行任何脚本之前加载页面内容



这就是说,这不是你遇到的问题,因为你说将你的
swal()
调用手动放入主体中可以工作。

那么你是在加载方法之前调用它的吗?你能检查一下Chrome的firebug控制台中的错误吗,这些片段非常依赖于它们所在的上下文。执行顺序在这里很重要。您是否尝试过添加
type='text/javascript'
,就像您在代码中所做的那样?因此它变成了
echo“swal('REGISTRATION SUCCESS!'),'You now directed to the payment screen!','SUCCESS');”
@talk2toyin添加
type='text/javascript'
将不会产生任何影响……那么,在加载方法之前,您是否调用了该方法?能否检查Chrome的firebug控制台中的错误?如果您能显示您正在执行的操作的实际fuill代码,这些代码片段非常依赖于它们所处的上下文。执行顺序在这里很重要。您是否尝试过添加
type='text/javascript'
,就像您在代码中所做的那样?因此它变成了
echo“swal('REGISTRATION SUCCESS!'),'You now directed to the payment screen!','SUCCESS');”
@talk2toyin添加
type='text/javascript'
将不会有任何区别……这不仅仅是一种不好的做法。当页面中有大量需要并行加载的资源时,可以避免这种做法。这不是空的问题,他的两个条件完全相同。这是一个申报问题。这家伙正在用PHP打印带有函数调用的脚本标记,他需要知道哪里出了问题,这是因为存在一个未声明的方法。每个规则都有例外,@TimDev-但没有理由相信这是其中之一。我将在我的回答下添加您的评论,作为帮助。但是,将脚本移动到底层的最佳实践确实是一个例外,就是当人们用JS或JS本身在身体的中间打印内容时。他显然正在做(可能更多)。他更安全,只要知道他还没有宣布,什么实际上不起作用。我知道你想进一步解释。但是有时候最好保持简单并坚持这个问题,他不会理解,甚至不会遇到并行加载时间的问题。哈哈,蒂姆,我不是在实践中假设互联网上的每个人都是弱智。我理解并尊重您的意见,但将代码放在onload函数中的概念并没有那么复杂:PIt不仅仅是一种糟糕的做法。当页面中有大量需要并行加载的资源时,可以避免这种做法。这不是空的问题,他的两个条件完全相同。这是一个申报问题。这家伙正在用PHP打印带有函数调用的脚本标记,他需要知道出了什么问题,这是因为存在一个未声明的方法。每个规则都有例外,@TimDev-但没有理由相信这是其中之一。我将在我的回答下添加您的评论,作为hel