【问题标题】:Popup displaying on refresh刷新时弹出显示
【发布时间】:2016-05-09 12:13:53
【问题描述】:

我有一个表单,其中有一个代码,当我按下创建/编辑链接时会显示一个弹出窗口。现在,当我进行页面刷新时,我得到以下弹出窗口

我已经设法阻止在按下重试时出现弹出窗口,方法是在我的 aspx 后面的代码上处理它,但是当按下取消时,页面会闪烁(我猜它会再次呈现?)并显示弹出窗口.
它不会返回到服务器。它只是转到显示弹出窗口的 javascript 函数并显示它。
此时需要注意的是,这个弹窗只是一个<div>,可以显示也可以隐藏。这个<div>的默认属性是隐藏的。
请帮我解决这个问题,并解释为什么会这样。我无法在 Internet 上找到任何解释此问题的信息。

【问题讨论】:

    标签: javascript jquery html asp.net dom


    【解决方案1】:

    提交表单时,可以使用 POST 或 GET 发送内容。

    使用 GET 发送会将值附加到定义您所在网页的地址。它可能看起来像这样:

    www.domain.tld/page?value1=apple&value2=banana
    

    使用 POST 发送将值发送到服务器接收的隐藏字段中。

    单击“重试”将使用 POST 字段中当前保存的信息加载网站。单击取消应该会显示您要去的地址,但没有 POST 内容。

    我希望这能回答您的问题。如果没有,您有什么方法可以显示处理 POST 数据的代码吗?

    【讨论】:

    • 但我不会转到其他页面。它在同一页上。弹出窗口更像是显示的 div 标签。它不是一个单独的窗口。所以,地址没有变化。我无法显示任何代码,但基本上在点击事件下,我正在比较视图状态和会话中的值以确定它是否是刷新。
    • 您如何处理提交的 POST 内容?如果您使用基本的 html <form>submit 进行此操作,并且具有同一页面的目标,那么您仍在发送如上所述的 POST 信息。您是否使用 Viewstate 处理它?
    • 我使用的是asp表单,但是可以。我通过 POST 发送数据。没有查询字符串。重试按钮使用 viewstate 处理。
    【解决方案2】:

    浏览器在您提交时将数据保存在表单中,当您刷新页面时,浏览器会再次尝试发送此数据。弹出窗口是来自浏览器的警告,表明这即将发生,这很重要,因为表单可能位于购物网站上,因此重新发送数据会导致意外多次购买相同的东西。

    要解决此问题,您可以在提交表单后重定向到另一个页面,或者您可以添加代码来重置表单,这样数据就不会再次发送。

    【讨论】:

    • 我的问题不在于再次发送的数据。我已经处理过了。这与我按下取消键时发生的事情有关
    【解决方案3】:

    我们应该遵循最佳实践来解决这个问题。最好看看this。当您按下取消按钮时,它只是加载上一页并且值将被持久化。

    【讨论】:

    • 考虑到我的弹出窗口只是一个
      在单击创建按钮时显示,单击关闭按钮将其隐藏,这是应该保留的最后一个值,对吗? "display: none" 应该是最后一个值,但它调用显示更改显示以阻止的 javascript。怎么可能?
    • 您是否在回发成功时设置了 display:block ?或在回帖后,用户单击“创建”按钮并关闭它,他单击“关闭”按钮。对吗?
    • 点击创建/编辑后,回传成功调用一个设置 display:block 样式的 javascript 函数。当用户单击创建/编辑时,会发出服务器请求,响应后执行回发成功
    • 对不起。做不到
    【解决方案4】:

    到目前为止,我的理解是,当您按下取消按钮时,页面的值是从浏览器的缓存中获取的。我清除了缓存来测试这个理论。缓存不仅存储页面的值,还存储收到的最后一个服务器响应。就我而言,最后一个服务器响应是通过调用我的 javascript 函数以及所需的值来显示弹出窗口,这就是它所做的。
    现在我的解决方法是将关闭按钮也作为服务器命令,以便最终响应是隐藏弹出窗口。

    如果这个解释有问题,请告诉我。

    【讨论】:

      猜你喜欢
      相关资源
      最近更新 更多
      热门标签