我将从外部脚本 javascript 获取一个 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;
}
}
我的 Controller :
<?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 失败。 怎么了 ?
谢谢
最佳答案
您的 Controller 代码将引发 PHP 错误。它必须看起来像:
public function getJson() {
$model = $this->getModel();
$data = $model->getItems();
$document = JFactory::getDocument();
$document->setMimeEncoding('application/json');
echo json_encode($data);
JFactory::getApplication()->close();
}
尝试将 Controller 操作设置为小写。我还会在 ajax 调用中将 $ 替换为 jQuery
。
要查看 ajax 调用的响应中实际内容,我建议使用 firebug 或 chrome 开发者控制台,它将显示整个响应,然后您将很快找到问题所在。
关于javascript - Joomla 2.5组件从外部脚本获取json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22173632/