【问题标题】:Reload Methods: responseText vs. window.location.href (1 trip vs 2)重新加载方法:responseText 与 window.location.href(1 次与 2 次)
【发布时间】:2012-01-05 17:07:03
【问题描述】:

在 Ajax 调用之后,我重新加载了一个网页。我有两个选择..

  1. 我可以将页面作为 responseText 发送,并使用 document.write() 将其写入屏幕。

  2. 我可以向 Javascript 发送一个控件,告诉它使用 window.location.href 重新加载网页。

选项 1 很好,因为它只需要一次往返而不是两次。然而,onload 事件并没有像正常重新加载那样被触发。

选项 2 很好,因为它触发了 onload 事件。

有什么方法可以两全其美...即我想使用 responseText 发送页面,但也想像新页面一样加载它,一旦它被接收。

当您在服务器上(控制权在服务器上)并且需要重新加载页面时,进行 1.5 次而不是 0.5 次行程是没有意义的。这是 Ajax 的弱点还是我只是不知道怎么做?

相关:

Caching Issues

*

Similar Post

【问题讨论】:

  • 您能否为您要完成的工作提供更多背景信息?
  • 上下文......我使用 Ajax 的所有情况......并且服务器选择需要重新加载......特别是......当用户登录时......当使用注册...当用户注销时...这些是当前的 3 种特定情况。
  • Ajax 技术并不真正意味着将整个页面的内容从服务器发送到浏览器。它们的预期用途是通过根据从服务器检索到的数据对页面内容进行小幅更改来更新已加载的页面。
  • 对..但是在注册时我需要访问服务器以填充数据库..从那里我需要重新加载下一页...必须通过控制权没有意义回到客户端,然后重新加载......人们是怎么做的?如果不是ajax怎么办?
  • 您可以将所有代码从 onLoad 事件移动到一个函数中。当您使用响应文本设置页面时,只需调用它即可。而不是使用'document.write()',我建议使用'document.body.innerHTML'和'document.head.innerHTML'。

标签: php javascript ajax


【解决方案1】:

好吧,我看到你想在用户注册时加载一个新页面。最好的方法是不使用 ajax。随着页面加载并触发 onLoad 事件。

但您还想检查用户使用的电子邮件是否已在使用中。我喜欢这样做的方法是创建一个变量并将其设置为 false。使用电子邮件输入字段的 onchange 事件来运行 ajax 验证。如果电子邮件可用且有效,我将变量设置为 true。我在按钮的 onsubmit 事件中添加了一个函数并返回变量。这样,只有当电子邮件可用时,用户才会被重定向。

或者:

您可以将所有代码从 onLoad 事件移到一个函数中。当您使用响应文本设置页面时,只需调用它即可。而不是使用 'document.write()' 我建议使用 document.body.innerHTMLdocument.head.innerHTML

【讨论】:

  • 好主意,但在您的第一个选项中,您仍然需要进行两次往返..我知道这可能是有多少人这样做,但在我看来仍然效率低下....选项 2 更有前途。基本上,当用户点击提交时,所有数据都被验证,页面返回为 responseText + 它会工作,因为我自动调用 onload 函数......这似乎很完美......谢谢!
  • 我认为第一个是大多数人的做法。因为它确实需要多次旅行,但您无需“重新加载”页面即可获得结果。
【解决方案2】:

不要为此使用 AJAX,甚至根本不要使用 JavaScript(当然,表单验证除外)。您可以使用普通的旧HTML 2.0

<form action="processSignup.php" method="post" onsubmit="return isFormValid();">
    <!-- input fields here -->
    <input type="submit" value="sign up" />
</form>

我不是 PHP 专家,但服务器代码不应该很复杂。进行数据库调用,然后重定向到下一页。它可能与您的 AJAX 示例中的代码完全相同

不要试图过度复杂化。这是从 1990 年代初开始使用的基本模式。 (或者更早的时候,我不确定,在那之前我没有互联网访问权限。)在这里使用 AJAX 模式不会获得任何好处。

【讨论】:

  • 有趣...这么多选择...都比我现在做的好。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-30
  • 2011-06-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-19
相关资源
最近更新 更多