Joomla 2.5组件从外部脚本获取json

时间:2014-03-04 13:44:23

标签: javascript json joomla

我会从外部脚本javascript获得一个json(来自db查询)。

我的模特:

<?php
defined('_JEXEC') or die();

jimport( 'joomla.application.component.modelList' );


class MediastoreModelList extends JModelList
{
    function getListQuery()
    {
        $db = JFactory::getDBO();
        $query = $db->getQuery(true);
        $query->select('id, type, designation', 'marque', 'prix');
        $query->from('produits');
        return $query;
    }
}

我的控制员:

<?PHP
defined('_JEXEC') or die('Restricted access');

jimport('joomla.application.component.controller');

class MediastoreController extends JController
{   
    public function getJson() {
        $model = getModel();
        $data = $model.getListQuery();
        $document = JFactory::getDocument();
    $document->setMimeEncoding('application/json');
    JResponse::setHeader('Content-Disposition','attachment;filename="result.json"');
    echo json_encode($data);
    }
}

我的javascript:

$.getJSON( "http://mediastore.dev/index.php?option=com_mediastore&task=getJson", function(data) {
    console.log(data);
});

但是getJSON失败了。 怎么了 ?

由于

1 个答案:

答案 0 :(得分:1)

您的控制器代码将抛出PHP错误。它必须看起来像:

public function getJson() {
    $model = $this->getModel();
    $data = $model->getItems();
    $document = JFactory::getDocument();
    $document->setMimeEncoding('application/json');
    echo json_encode($data);
    JFactory::getApplication()->close();
}

尝试将控制器操作设置为小写。我还会在你的ajax调用中用jQuery替换$。 要查看ajax调用响应中的实际内容,我建议使用firebug或chrome开发人员控制台,它将显示整个响应,然后您会很快发现问题所在。