重新加载方法:responseText与window.location.href(1次vs 2次)

时间:2012-01-05 17:07:03

标签: php javascript ajax

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

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

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

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

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

    有没有办法让两个世界都做到最好......即。我想使用responseText发送页面,但是一旦收到它,它也会像新页面一样加载。

    当你在服务器上(控制在服务器上)并且需要重新加载页面时,我没有理由做1.5次旅行而不是.5次旅行。这是Ajax的弱点还是我不知道这么做的热点?

    相关:

    Caching Issues

    *

    Similar Post

2 个答案:

答案 0 :(得分:1)

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

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

或者:

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

答案 1 :(得分:0)

不要为此使用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示例中的完全相同的代码。

不要试图过度复杂化。这是从20世纪90年代初开始使用的基本模式。 (或者更早,我不确定,之前我没有上网功能。)你在这里使用AJAX模式没有获得任何东西。