我对PHP / MYSQL领域有点新意,并且有一个想法是能够通过使用隐藏的Iframe在后台运行PHP页面(iframe)来与我的数据库进行交互而无需离开当前页面?
好?坏?常见的做法?意见?
答案 0 :(得分:3)
这大部分时间都很糟糕,但有时候是不可避免的。
这样做的常见做法是使用AJAX,即使W3School对此有article这也很常见。
在IFrame上使用AJAX的优点是AJAX可以是多线程的。您可以连续发送多个请求,使用IFrame实现起来会更麻烦。此外,AJAX支持状态代码,因此您可以检测错误,在IFrame中您必须依赖于抓取页面的HTML,并希望您通过查看错误页面的HTML代码来确定正确的状态。
AJAX是更多JavaScript惯用和事件驱动,这意味着当有响应时,您的回调会自动得到通知。使用IFrame,您必须setTimeout()
并继续轮询IFrame以获得响应,这可能很容易破坏。
如果你想在不离开当前页面的情况下上传文件,IFrame有时是不可避免的。但这可能不是你的范围,因为你只提到了数据库交互。
学习使用XMLHttpRequest,这是AJAX的基础。熟悉之后,尝试使用jQuery,Dojo等JavaScript框架来实现它的乐趣。
答案 1 :(得分:0)
这通常使用AJAX来完成。 jQuery 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的内容(如果这是可能的话)并对其执行某些操作
更不用说,当你遇到问题时,你可能会在SO上寻求建议。每次,人们都会说“放弃并使用jQuery!” :)也可以跳过所有的痛苦和痛苦,并以正确的方式开始
答案 2 :(得分:0)
我猜想当你的数据库做某事时应该会发生什么事,对吧?即您的页面应该提供某种反馈,可能会更新数字或某些文本。
所以你无论如何都要使用Javascript。在这种情况下,跳过iframe并发送AJAX请求。
答案 3 :(得分:0)
在采用XMLHttpRequest api之前使用了隐藏的iframe方法(也许你已经听说过它是Ajax)。
多年前我使用rslite使用以前的实现,但现在这种技术对我来说只是一个历史价值。
您可以在http://www.xul.fr/en-xml-ajax.html的纯JavaScript中获取有关使用Ajax技术的说明,或者更好的是,您可以选择使用公共库jquery或mootools来处理不同浏览器中的不同实现。