在Ajax调用之后,我重新加载了一个网页。我有两个选择..
我可以将页面作为responseText发送,并使用document.write()将其写入屏幕。
我可以向Javascript发送一个控件,告诉它使用window.location.href重新加载网页。
选项1很好,因为它只需要一次往返而不是两次。但是,onload事件没有像正常重新加载那样被触发。
选项2很好,因为它会触发onload事件。
有没有办法让两个世界都做到最好......即。我想使用responseText发送页面,但是一旦收到它,它也会像新页面一样加载。
当你在服务器上(控制在服务器上)并且需要重新加载页面时,我没有理由做1.5次旅行而不是.5次旅行。这是Ajax的弱点还是我不知道这么做的热点?
相关:
*
答案 0 :(得分:1)
好的,我看到你想在用户注册时加载一个新页面。最好的方法是不使用ajax。当页面加载并且onLoad事件被触发时。
但您还想检查用户使用的电子邮件是否已被使用。我喜欢这样做的方法是创建一个变量并将其设置为false。使用电子邮件输入字段的onchange事件来运行ajax验证。如果电子邮件可用且有效,我将变量设置为true。我在按钮的onsubmit事件中添加了一个函数并返回变量。这样,只有在电子邮件可用时才会重定向用户。
或者:
您可以将所有代码从onLoad事件移动到函数中。当您使用响应文本设置页面时,只需调用它。而不是使用'document.write()'我建议使用document.body.innerHTML
和document.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模式没有获得任何东西。