我正在尝试在joomla中创建一个模块,它使用一个jquery插件。我在点击模块中的元素时进行ajax操作。目前我正在指定php文件的完整路径。但我知道这是一种错误的方法。
jquery插件中的代码是这样的。(请注意在jquery插件文件中指定路径的第二行)
$.get(
"/subdirectory/MyBlog/modules/mod_calendar/getCalendar.php", {
month: $("#selectedMonth").val(),
year: $("#selectedYear").val(),
flag: '-1'
}, function(data){
$("#monthlyCalendar").html(data);
$("#monthlyCalendar").show();
}
);
在jquery插件文件中指定路径的正确方法是什么。 另外,我需要知道将jquery插件文件放在模块中的哪个位置。
答案 0 :(得分:1)
答案 1 :(得分:0)
我发现这样做的最好方法是使用JURI :: root方法创建一个我可以使用的javascript变量。在你的PHP代码中,你会做这样的事情:
?>
<script type="text/javascript">
var joomlaRoot = '<?php echo JURI::root(); ?>';
</script>
<?php
然后,当您进行AJAX调用时,可以使用该变量。
关于将jquery插件文件放在模块中的位置,您可以在模块目录下随意放置它,然后再次使用JURI :: root创建它的路径并调用JDocument::addScript method。
另外,您可以考虑使用MooTools。它与Joomla捆绑在一起!已经。它具有进行AJAX调用的能力。此外,通过使用它,您可以避免出现jQuery冲突的可能性。
答案 2 :(得分:0)
Atlast我能够找到一个很好的解决方案,在Joomla中使用Jquery来使用Ajax。
首先,您需要创建一个视图和模型,以通过AJAX调用获取所需的html。
然后使用类似于以下内容的jQuery代码来获取所需视图的输出。
//Code to get the base URL of joomla installation
szURL = document.URL;
componentList = szURL.split('/');
szDocument = componentList[componentList.length-1];
szURL = szURL.replace(szDocument, "");
//URL to the required component
url = szURL + "?option=COMPONENT_NAME&view=VIEW_NAME&tmpl=component&uid=" + getRandomValue();
jQuery.get(url, function(data) {
jQuery("#mydiv").html(data);
});
//Function to get a random number
//It is used for Ajax calls from IE; Else IE will use the cache values
function getRandomValue(){
return Math.floor(1000000 * (Math.random() % 1))
}
请注意用于ajax调用的URL。它使用“tmpl=component
”来获取所选组件的html而不使用joomla HTML。