2014-03-04 36 views
1

我会从外部脚本javascript获取json(从db查询中创建)。Joomla 2.5组件从外部脚本获取json

我的模型:

<?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。 有什么问题?

感谢

+0

你是如何加载jQuery库以及如何和在哪里进行的AJAX调用? Joomla也使用了使用$字符的mootools,所以我会尝试的第一件事就是用JavaScript代码中的jQuery代替$。 –

回答

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开发者控制台来显示整个响应,然后您会很快找到问题所在。