首先,我对jQuery不是很熟悉。
我正在为我的Joomla网站构建域检查模块。 基本的php模块运行完美,但在提交表单(带域名)后,页面会重新加载以显示结果。
因为模块必须检查许多whois服务器,所以需要一些时间。我决定调查jQuery来加载结果,所以我可以展示一个漂亮的加载器,用户知道网站正在检查。
我的jQuery:
jQuery.noConflict();
jQuery(document).ready(function() {
jQuery('#domaincheckbutton').click(function(event){
event.preventDefault();
jQuery('#domainsearch').hide();
jQuery('#preloader').show();
jQuery.get("/modules/mod_s5_domain_check/domaincheck.php",
{
domainname: jQuery('#domainname').val()
},
function(data, textStatus)
{
jQuery('#domainresult').html(data);
jQuery('#preloader').hide();
jQuery('#resultcontainer').show();
jQuery('#domainsearch').show();
}).fail(function () {
alert('There was an error collecting domain data, please report this to an administrator.');
});
});
});
上面的jQuery按预期工作,显示一个加载器并从domaincheck.php文件中获取结果。 问题是模块参数没有加载到这个domaincheck.php中。我想这是因为php文件不在模块范围内了。
我尝试将以下内容添加到domaincheck.php:
// Get Joomla! framework
define( '_JEXEC', 1 );
define( '_VALID_MOS', 1 );
define( 'JPATH_BASE', realpath(dirname(__FILE__).'/../../' ));
define( 'DS', DIRECTORY_SEPARATOR );
require_once ( JPATH_BASE .DS.'includes'.DS.'defines.php' );
require_once ( JPATH_BASE .DS.'includes'.DS.'framework.php' );
$mainframe =& JFactory::getApplication('site');
$mainframe->initialise();
$user =& JFactory::getUser();
$session =& JFactory::getSession();
jimport( 'joomla.application.module.helper' );
$module = JModuleHelper::getModule('mod_s5_domain_check');
$moduleParams = new JRegistry();
$moduleParams->loadString($module->params);
但是这不起作用,我试图回应一些参数,但它们都是空的。 除此之外它开始变得凌乱.. :(
我想要一个解决方案,我可以在'mymodule / helper.php'文件中使用php函数。 但是我如何与jQuery一起做这个? 我知道php(服务器端)是在jQuery(客户端)之前运行的,所以简单回答这个问题的标题是No .. 但是我必须等待用户输入所需的域名,所以我知道要检查什么。
如何使用jQuery等待php函数进行域检查然后显示结果?
非常感谢您对此的任何想法!
此致 比约