使用隐藏的iFrame运行PHP脚本-好吗?糟糕?意见?

使用隐藏的iFrame运行PHP脚本-好吗?糟糕?意见?,php,mysql,database,events,iframe,Php,Mysql,Database,Events,Iframe,我对PHP/MYSQL领域有点陌生,我有一个想法,可以通过使用隐藏的Iframe在后台运行PHP页面(Iframe)来与数据库交互,而不必离开当前页面 好吗?糟糕?惯例?意见?这通常是使用AJAX实现的。javascript库使这变得简单 我不认为使用iframe是实现这一点的好方法。您仍然需要启用javascript来更改iframe的位置,如果javascript可用,为什么不使用AJAX呢 如果使用iframe,如果不进行大量的变通,就无法以任何有意义的方式从服务器接收响应。例如,使用jQ

我对PHP/MYSQL领域有点陌生,我有一个想法,可以通过使用隐藏的Iframe在后台运行PHP页面(Iframe)来与数据库交互,而不必离开当前页面


好吗?糟糕?惯例?意见?

这通常是使用AJAX实现的。javascript库使这变得简单

我不认为使用iframe是实现这一点的好方法。您仍然需要启用javascript来更改iframe的位置,如果javascript可用,为什么不使用AJAX呢

如果使用iframe,如果不进行大量的变通,就无法以任何有意义的方式从服务器接收响应。例如,使用jQuery,您可以通过单个函数调用向服务器提交一些信息,然后当该请求完成时,可以使用来自服务器的响应信息调用回调函数:

$.post("ajax.php", { var1: "data", var2: "moredata" },
   function(data){
     alert("Server says: " + data);
   });
在本例中,当请求完成时,会出现一个警报框,输出为
ajax.php

使用iframe,您可能会将iframe的位置更改为
server.com/iframe.php?var=data&var2=moredata&var3=moredata
,然后稍等片刻,抓取iframe的内容(如果可能的话)并进行处理


更不用说,当你在做这件事时遇到问题,你可能会就此寻求建议。每一次,人们都可能会说“放下它,使用jQuery!”:)或者干脆跳过所有的痛苦和痛苦,从正确的方式开始吧

我猜当你的数据库做一些事情时,应该会发生一些事情,对吗?也就是说,你的页面应该给出一些反馈,可能更新一个数字或一些文本


所以你还是要使用Javascript。在这种情况下,跳过iframe,只发送AJAX请求。

这在大多数情况下是不好的,但有时是不可避免的

通常的做法是使用AJAX,这非常普遍,甚至连W3School都对此有自己的看法

与IFrame相比,使用AJAX的优势在于AJAX可以是多线程的。您可以在一行中发送多个请求,这对于使用iframe实现来说比较麻烦。此外,AJAX支持状态代码,因此您可以检测错误,而使用iframe,您必须依赖于删除页面的HTML,并希望通过查看错误页面的HTML代码来确定正确的状态

AJAX更为JavaScript惯用和事件驱动,这意味着您的回调将在有响应时自动得到通知。使用IFrame,您必须
setTimeout()
并不断轮询IFrame以获得响应,这可能很容易中断

IFrame有时是不可避免的,例如您希望在不离开当前页面的情况下上载文件。但这可能不是您的范围,因为您只提到了数据库交互


学习使用XMLHutpRestQuess,这是Ajax的基础。熟悉之后,可以尝试使用jQuery、Dojo等JavaScript框架来增加乐趣。

隐藏的iframe方法是在采用XMLHttpRequest api之前使用的(也许您听说过它是Ajax)

几年前,我使用的是以前的实现,但现在,这种技术对我来说,只是一种历史价值


您可以在纯javascript中获得使用Ajax技术的指导,或者更好的是,您可以选择使用公共库或其他库来处理不同浏览器中的不同实现。

无需使用
setTimeout()
继续轮询iframe。您可以简单地在iframe中发送JavaScript代码,它可以在加载时执行回调。