3

我对 AJAX 有很好的理解,通常使用它不会有任何问题,但我对 Joomla 比较陌生,最近才开始构建组件等。

我创建了一个使用“默认”视图的组件(命名目录)。在这里,我有以下代码,它是一个 AJAX 调用:

<script type="text/javascript">                         
var url = "index.php?option=com_directory&view=directory&task=clubFilter&format=raw";
jQuery(document).ready(function() {
    jQuery('#city').change(function() {         

        jQuery.ajax({
            url: url,
            type: "POST",
            data: jQuery("#city").serialize(),
            dataType: 'json',
            success: function(data) {
                alert('data');
            }
        });
    });
});

在我的“views/directory/views.html”文件中,我创建了以下函数,该函数当前包含一个骰子,因此我可以确认它何时工作:

public function clubFilter() {
        die(print_r('here_i_am'));
    }

当我运行以下代码时,我在 Firebugs 控制台中出现以下错误。

'Error: 500 View not found [name, type, prefix]: directory, raw, directoryView'

我认为这是因为 AJAX url var 不正确,但我从这里和其他来源尝试了许多不同的解决方案,只是无法使 AJAX 功能正常工作。我的网址错了吗?非常感谢

4

2 回答 2

5

通常,我对控制器上的任务进行 ajax 调用。

这是我在使用 ajax 调用组件的扩展之一中使用的 url 格式:

index.php?format=raw&option=<component_name_goes_here>&task=<task_goes_here>

然后,在我的组件的默认控制器中,我放置了一个与任务同名的函数:

function getSomeData()
{
   echo(json_encode($data));//I normally return json
}

希望这可以帮助。

于 2012-10-30T16:13:59.823 回答
3

试试这个网址。它可能会帮助你。

var url = "index.php?option=com_directory&view=directory&task=clubFilter&tmpl=component";

format=raw用。。。来代替&tmpl=component

否则,您也可以尝试以下格式。

jQuery.post('index.php',{
                        'option':'component_name',
                        'controller':'controller_name',
                        'task':'task_name',
                        'format':'raw',                   
                        'data': jQuery("#city").serialize(),
                        'dataType': 'json',
                },function(result){                     
                      //edit the result here

                    return;
       }); 

如果您对此有任何疑问,请随时提出。

于 2012-10-30T16:24:57.197 回答