1

我正在尝试在 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 插件文件放在模块中的什么位置。

4

3 回答 3

1

我在下面的博客中找到了答案。

http://blog.subooa.com/development/joomla-coding/ajax-in-joomla-with-jquery/

于 2010-07-01T04:28:25.660 回答
0

我发现最好的方法是使用 JURI::root 方法创建一个我可以使用的 javascript 变量。在您的 php 代码中,您将执行以下操作:

?>

<script type="text/javascript">
        var joomlaRoot = '<?php echo JURI::root(); ?>';
</script>

<?php

然后,您可以在进行 AJAX 调用时使用该变量。

至于将 jquery 插件文件放在模块中的哪个位置,您可以将它放在模块目录下的任何位置,然后再次使用 JURI::root 创建路径并调用JDocument::addScript 方法

另外,您可以考虑使用 MooTools。它捆绑在 Joomla 中!已经。它具有执行 AJAX 调用的能力。此外,通过使用它,您可以避免出现 jQuery 冲突的可能性。

于 2010-06-19T18:21:30.963 回答
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。

于 2010-12-22T06:05:30.300 回答