Php div中的ajax身份验证

Php div中的ajax身份验证,php,jquery,mysql,ajax,Php,Jquery,Mysql,Ajax,大家好,这里是荷兰GJ的一个问题 我正忙于我的第一个AJAX web编程,非常喜欢这样的想法:加载一个php文件(索引),然后xmlhttprequest就可以加载和刷新div的内容,而无需刷新页面 到目前为止,一切都很顺利,大约4个div部分根据您按下的菜单按钮获得不同的内容(全部通过getdata函数和xmlhttprequests) 我的最后一步是集成一个额外的autenthization div。我正在尝试使用login.php实现一个漂亮的jquery淡入淡出系统,输入用户名和密码字段

大家好,这里是荷兰GJ的一个问题

我正忙于我的第一个AJAX web编程,非常喜欢这样的想法:加载一个php文件(索引),然后xmlhttprequest就可以加载和刷新div的内容,而无需刷新页面

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

我的最后一步是集成一个额外的autenthization div。我正在尝试使用login.php实现一个漂亮的jquery淡入淡出系统,输入用户名和密码字段;一个进程_login.php,它将数据与mysql进行比较,并返回是否匹配;最后是一个安全页面,用户可以在成功授权后注销。 当我直接在浏览器中加载login.php时,这些页面似乎无法正常工作

当我在login.php上使用getdata和xmlhttprequest将其加载到index.html上的div部分时,任何东西都不能再工作了,因为它似乎不能再使用login.php页面上声明的函数了

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

我想不起来了。请告诉我任何信息。欢迎…欢迎


GJ

至于为什么……我不知道为什么会这样

但是,关于修复/解决方法。Im目前处于类似的情况,Im加载在页面中(实际上是asp/jscript,而不是php)。我发现,当通过AJAX加载时,您在正在加载的页面中编写的脚本不再可用。如果加载的页面包含小程序或其他html对象类型的标记,我也遇到过同样的问题

解决方案是将脚本移动到服务器上的外部文件中,从那里您的页面将能够访问它们,而不管它是由AJAX作为面板加载的,还是作为独立页面加载的

示例:(这显然是jscript而不是php,但加载方式类似。) 页面login.asp包含在


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

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

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

login,/scripts/login.js

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

data = $('#wrapper').find('#script').html().split(',');
if (!window[data[0]]) {
   $.getScript(data[1]);
}
因此,基本上,您在HTML中传递一些信息,加载程序使用这些信息来确定它需要什么。第一个参数是名称空间,因此您可以检查它是否已加载。第二个是脚本的路径

您可以将其充实到多个脚本中,使用JSON作为数据格式,等等。。但这是一个基本的想法

是的,你也可以把所有的脚本都放在前面:)不过,对于任何非平凡的应用程序,按需加载都是一个好主意,这样你就不会把不需要的脚本弄得乱七八糟了。毕竟,每个会话只需要一次登录脚本

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