gpt4 book ai didi

php - div 中的 ajax 身份验证

转载 作者:行者123 更新时间:2023-11-29 14:52:28 26 4
gpt4 key购买 nike

大家好……这是来自荷兰的 GJ 的问题。

我正忙于我的第一个 AJAX Web 编程,并且非常喜欢加载一个 php 文件(索引)的想法,并且从那里 xmlhttprequest 能够加载和刷新 div 的内容,而无需刷新页面。

到目前为止,一切运行良好,大约 4 个 div 部分根据您按下的菜单按钮获得不同的内容(全部通过 getdata 函数和 xmlhttprequests)。

我的最后一步是集成一个额外的身份验证 div。我正在尝试使用带有用户名和密码输入字段的login.php 来实现一个漂亮的jquery 淡入淡出系统; process_login.php 将数据与 mysql 进行比较,如果匹配则返回;最后是一个安全页面,用户在成功授权后可以在其中注销。当我直接在浏览器中加载login.php时,这些页面似乎工作顺利。

当我在login.php上使用getdata和xmlhttprequest将其加载到index.html上的div部分时,不再起作用因为它似乎无法再使用login.php上声明的函数页面

阅读 ajax for dummies 并没有给我任何答案,尽管我确信这个事实一定有一个易于理解的逻辑解释。

我无法理解它......请欢迎任何信息......问候

GJ

最佳答案

通过ajax加载的Javascript不会成为窗口的一部分。您必须显式执行它(例如使用 eval )。这个问题没有直接的解决方案,因此您需要为您的应用程序提供一个模型,以了解通过 ajax 加载的内容所需的资源。

做到这一点的最佳方法是创建一些应用程序范围的约定 - 例如设置页面和脚本文件的交叉引用,并使用 $.getScript按需加载它们。理想情况下,您应该在尝试再次加载资源之前检查资源是否已加载。

这是一个您可以使用的简单想法。在 login.php 的输出中在顶部添加一个标签,例如

<span id="script" style="display:none">login,/scripts/login.js</span>

然后在加载页面的 ajax 调用之后,执行如下操作:

data = $('#wrapper').find('#script').html().split(',');
if (!window[data[0]]) {
$.getScript(data[1]);
}

所以基本上你是在 HTML 中传递一些信息,加载程序使用这些信息来确定它需要什么。第一个参数是命名空间,因此您可以检查它是否已经加载。第二个是脚本的路径。

您可以充实这一点以解释多个脚本,使用 JSON 作为数据格式等......但这是一个基本想法。

是的,您也可以随时在前面包含所有脚本:) 但是,对于任何重要的应用程序来说,按需加载都是一个好主意,这样您就不会因为不需要的脚本而弄乱事情。毕竟每个 session 只需要登录脚本一次。

关于php - div 中的 ajax 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5457418/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com