我会从外部脚本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失败了。 怎么了 ?
由于
答案 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开发人员控制台,它将显示整个响应,然后您会很快发现问题所在。