Joomla:使用jQuery加载php函数
首先,我对jQuery不是很熟悉 我正在为我的Joomla网站构建一个域检查模块。 基本php模块工作得很好,但是在提交表单(带有域名)后,页面将重新加载以显示结果 由于模块必须检查许多whois服务器,因此需要一些时间。我决定查看jQuery以加载结果,这样我可以显示一个漂亮的加载程序,用户知道网站正在检查 我的jQuery:Joomla:使用jQuery加载php函数,jquery,joomla,module,Jquery,Joomla,Module,首先,我对jQuery不是很熟悉 我正在为我的Joomla网站构建一个域检查模块。 基本php模块工作得很好,但是在提交表单(带有域名)后,页面将重新加载以显示结果 由于模块必须检查许多whois服务器,因此需要一些时间。我决定查看jQuery以加载结果,这样我可以显示一个漂亮的加载程序,用户知道网站正在检查 我的jQuery: jQuery.noConflict(); jQuery(document).ready(function() { jQuery('#domaincheckbutt
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(客户端)之前运行的,所以这个问题的标题的简单答案是否定的。。
但是我必须等待用户输入所需的域名,这样我才知道要检查什么
如何使用jQuery等待php函数进行域检查,然后显示结果
非常感谢您对这方面的任何想法
问候,,
Bjorn离题:代替
jQuery(document).ready(function(){
),做速记jQuery(function($){
,将$
作为参数传递,并在其中使用别名$
,而不是jQuery
。节省了不少字符。您是否尝试在.get()上使用.done()
?那当然是空的,因为您加载的模块文件实际上没有分配到任何页面,所以模块参数还没有设置。您只是加载了文件和joomla framework。您的问题可以解决,但我需要您想要实现的详细信息,以便我可以帮助您通过alternet方式实现。您正在使用此文件吗?@isherwood:Yep,你对$alias很了解。我还注意到,计划在它工作时进行一些代码清理。@Salilomin:不确定你对第一句话的意思。在模块php文件中,我使用$buttontext=$params->get('buttontext','');来获取参数。对于'external'php文件,我使用$buttontext=$moduleParams->get('buttontext','');。注意$moduleParams而不是$params。。我尝试在require框架和Jmodulehelper块之后获取这些参数。在许多如何在外部php文件中加载模块参数中解释了此解决方案。但对我不起作用。正如我提到的,我宁愿不使用单独加载框架的外部文件。感谢psi-4ward链接