1

我有这个 jquery 代码,一切正常,但如果可能window.location.reload(true);的话,我想隐藏 div#cmd

$(document).ready(function () {
    $("#add").click(
        function () {

            var id = $(this).attr("rel"); // ID
            var full_name = $("#full_name").val();
            var email = $("#email").val();
            var comments = $("#comments").val();
            var datapost = "id=" + id + "&full_name=" + full_name + "&email=" + email + "&comments=" + comments;

            $.ajax(
                {

                    type:"post",
                    url:"{/literal}{base_url()}{literal}post/add_cmd",
                    data:datapost,
                    success:function (Response) {
                        if (Response == 'added') {

                            alert("شكرا لك .. " + full_name + " على التعليق سوف يتم إداراج تعليقك بعد تحديث الصفحة");
                            window.location.reload(true);
                            $("#cmd").hide("Slow");

                        } else {
                            alert(Response);
                        }
// window.location.href = '../admcat/cats';
                    },
                    fail:function () {
                        alert("تعذر حذف الركورد لسوء الاتصال بالانترنت");
                    }
                }
            );


        }
    );


});

如果可能的话,我希望之后window.location.reload(true);会隐藏。$("#cmd")

4

2 回答 2

2

这并不容易,因为 HTTP 是一个无状态协议。这意味着,如果您重新加载,页面的状态就会丢失。

但是有一种方法可以同时使用 JavaScript 和 PHP。

  1. 在第一次加载时设置 cookie
  2. 在 PHP 中重新加载时,检查 cookie 的存在并设置#cmddiv 的可见性。

还有其他方法。所有这些方式都试图将状态(“页面已经加载一次”)传递给下一次加载。

  1. 使用不同的方法重新加载(第一次 GET,然后 POST)
  2. 传递一个 URL 参数,而不是仅仅重新加载
  3. 使用 PHP 会话

这四种方式都需要 PHP 去检查:cookie 是否存在,HTTP 方法是什么,参数是什么,会话中有什么?

于 2012-10-07T08:27:21.133 回答
2

没有很好的方法来检测是页面加载还是重新加载,基本上是一样的。如果您想在第一次加载页面时隐藏元素,然后在每次重新加载时隐藏元素,您可以执行以下操作:

$("#cmd").hide();

如果它必须仅重新加载,我想一种方法是不使用window.location.reload,而是window.location.href向 URL 添加一些内容,例如查询字符串变量,然后您可以在每个页面加载时检查,并隐藏元素(如果存在) .

于 2012-10-07T08:27:32.507 回答