【问题标题】:How to retrieve information via ajax from php file before a header redirect?如何在标头重定向之前通过 ajax 从 php 文件中检索信息?
【发布时间】:2013-10-20 01:58:34
【问题描述】:

我正在尝试使我的页面更加动态,我有一个从头开始制作的论坛,我现在也在实施 javaScript。所有PHP都完成了。现在,我想在没有页面刷新和一些淡化效果的情况下登录用户。

在我的 PHP 文件中,我有一些验证和标头重定向,基于用户是否输入了错误的密码、错误的用户名或用户是否成功登录。我努力的是使用 AJAX 在 javaScript 中进行一些验证。我知道在标头重定向之前我无法输出任何内容,但是如果我不能从 PHP 文件中检索信息,我应该如何?

if (mysqli_num_rows($result) < 1) {
            //echo 'error_login';
            header('Location:../index.php?error=login&email='.$user_email);
            exit();

这是一个无效的示例,因为在标题之前的输出与我想要实现的类似。如果用户登录失败,php 文件应该准备一条消息,我可以通过 AJAX 调用检索并用于客户端验证。

任何想法或提示我应该如何从这里开始?提前感谢我能得到的所有帮助。

【问题讨论】:

    标签: javascript php jquery ajax validation


    【解决方案1】:

    我可以建议您在开始设计之前接受一些 Ajax 教育吗?去那里作为一个很好的起点:https://developer.mozilla.org/en-US/docs/AJAX/Getting_Started。这听起来不应该粗鲁,但在开始开发软件之前了解机制会更好;-)

    您不会使用 Ajax “从 PHP 中提取”。 PHP 仍然是服务器端处理,而 Javascript (Ajax) 是客户端。基本上它只是客户端与服务器通信的一种稍微不同的方式 - 它总是由客户端启动。

    要获得您想要实现的目标,您不会重定向客户端,而是通过 Ajax 传输用户 ID/密码,同时在 Ajax 中获取服务器响应。然后,在客户端,您可以将服务器响应合并到您的网页结构中,而无需重新加载整个页面或移动到不同的 URL。

    但在开始之前,请先做好功课并了解 Ajax 的全部内容。

    【讨论】:

    • 感谢分享,我发布的代码 sn-p 只是为了展示我想要实现的目标,我仍然想听听一些关于我可以做些什么来实现这一点的想法,一种获取错误的方法即使 php 代码中有标头重定向,也可以通过 AJAX 调用发送消息。
    • @Dan-LeviTømtaHansen 关键是没有标头重定向。无论是一个值还是整个 json 编码数组,您都将回显您想要传回的任何信息。
    • 我有重定向的原因是如果 javaScript 没有运行客户端,页面也应该工作。
    • 我有一个解决我的问题的方法,但我想听听你的想法。我可以像这样在 php 中创建一个函数:function is_ajax() { if (isset($_SERVER['HTTP_X_REQUESTED_WITH']) &amp;&amp; $_SERVER['HTTP_X_REQUESTED_WITH'] == "XMLHttpRequest") { return true; } else { return false; } } 然后像这样设置一个 IF Else 语句:if (is_ajax() == true) { echo 'This is a ajax call'; //echo the message here } else { echo 'This is not a ajax call'; //Do the header redirection here } 这样做有什么问题吗?
    • 你在正确的轨道上。我唯一不确定的是 HTTP_X_REQUESTED_WITH 标头是否真的可靠。
    猜你喜欢
    • 2012-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-29
    • 2021-09-08
    • 2010-11-25
    • 2018-05-22
    • 1970-01-01
    相关资源
    最近更新 更多