Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
结合PHP和jQuery?_Php_Jquery_Html - Fatal编程技术网

结合PHP和jQuery?

结合PHP和jQuery?,php,jquery,html,Php,Jquery,Html,我正在尝试运行以下代码: if($thisIsSaved > 0 && $_SESSION["loggedIn"] == 1) { //show unsave echo "<script>$('#unsave').show();$('#save').hide();</script>"; } elseif($t

我正在尝试运行以下代码:

        if($thisIsSaved > 0 && $_SESSION["loggedIn"] == 1)
            {
                //show unsave
                echo "<script>$('#unsave').show();$('#save').hide();</script>";
            }
        elseif($thisIsSaved == 0 && $_SESSION["loggedIn"] == 1)
            {
                //show save
                echo "<script>$('#save').show();$('#unsave').hide();</script>";
            }
        else
            {
                echo "<script>$('#unsave').hide();$('#save').hide();</script>";
            }

<button id="save">Save</button>
<button id="unsave">Unsave</button>
if($thisIsSaved>0&&$\u会话[“loggedIn”]==1)
{
//不保存
回显“$('#未保存').show();$('#save').hide();”;
}
elseif($thisIsSaved==0&&$\u会话[“loggedIn”]==1)
{
//显示保存
回显“$('#保存').show();$('#unsave').hide();”;
}
其他的
{
回显“$('#未保存').hide();$('#save').hide();”;
}
拯救
未保存

我以前在纯PHP中有这个,没有jQuery。它所做的是,根据$thisIsSaved的值,它将显示或不显示其中一个或两个按钮。现在是jQuery,页面不像PHP那样保存jQuery的保存状态,因此我必须找到一种在开始时显示和隐藏按钮的替代方法。有什么帮助吗?

您需要将脚本中的内容包装到调用中:

。。。
echo“$(document).ready(function(){$('#unsave').hide();$('#save').hide();}”);
...
问题是,由于document.ready不会延迟这些脚本的执行,因此jQuery命令在实际解析元素之前运行(因为按钮出现在脚本标记之后)

通常最好确保运行的任何涉及DOM的jQuery都在文档中运行。准备好确保所有内容都已解析。你会在大多数在线示例中看到这一点


尽管如此,为什么要将处理工作转移给客户机呢?如果您可以用PHP输出一个类/样式来隐藏/显示按钮,我建议保留该类/样式,除非需要执行其他特定的客户端逻辑。

您需要将脚本中的内容包装在调用中:

。。。
echo“$(document).ready(function(){$('#unsave').hide();$('#save').hide();}”);
...
问题是,由于document.ready不会延迟这些脚本的执行,因此jQuery命令在实际解析元素之前运行(因为按钮出现在脚本标记之后)

通常最好确保运行的任何涉及DOM的jQuery都在文档中运行。准备好确保所有内容都已解析。你会在大多数在线示例中看到这一点


尽管如此,为什么要将处理工作转移给客户机呢?如果可以用PHP输出一个类/样式来隐藏/显示按钮,我建议保留该类/样式,除非需要执行其他特定的客户端逻辑。

尝试将按钮html放在生成jquery的PHP之前,因此,当呈现页面时,按钮在您尝试隐藏/显示它们之前被定义。

尝试将按钮html放在生成jquery的php之前,以便在呈现页面时,按钮在您尝试隐藏/显示它们之前被定义。

我同意。既然状态检查是对存储在PHP变量中的数据进行的,那么为什么要将逻辑从PHP移动到jQuery/客户端,用户可以在那里操作html并执行您可能不想执行的操作呢?我同意。既然状态检查是对存储在PHP变量中的数据进行的,那么为什么要将逻辑从PHP移动到jQuery/客户端,在那里用户可以操作html并执行您可能不希望的操作呢。
...
echo "<script>$(document).ready(function() { $('#unsave').hide();$('#save').hide(); });</script>"; 
...