Joomla 2.5 Ajax组件不工作



我已经尝试了很长时间让Json在Joomla工作,我只是做不到。我想我已经尝试了URL等的每种组合,所以任何帮助都会很棒:

这是管理端结构的样子管理

控制器

——orderitem.php

视图

——orderitem

——tmpl

——orderitem.php

-controller.php

函数updateNow(newrefresh) {

var dataJSON = JSON.encode (newrefresh);
var request = new Request.JSON({
    method: 'post',
    url: 'index.php?option=com_customersitedetails&view=orderitem&task=refreshscreen&format=raw',   
    data: {
        json: dataJSON
        },
    onComplete: function(jsonObj) {
        alert("Your form has been successfully submitted ");
    }
}).send();

};

虽然会运行警告框但不会返回JSON,只是

View not found [name, type, prefix]: orderitem, raw, customersitedetailsView

你知道我可以从哪里开始吗?由于

您缺少包含CustomersitedetailsViewOrderitem类的views/orderitem/view.raw.php

视图/orderitem view.raw.php

class CustomersitedetailsViewOrderitem extends JViewLegacy
{
    public function display($tpl = null)
    {
        $response = 'Your magic response here';
        echo $response;
        JFactory::getApplication()->close();
    }
}

您可以在这里查找joomla中正确的ajax调用如何用AJAX编写PHP

在你的控制器中你应该有一个文件"mycall.json.php"这个文件将处理并返回一个json格式的ajax调用

Joomla并没有将AJAX构建作为其系统的一部分。我的答案来自Josef Leblanc在lynda.com的课程http://www.lynda.com/joomla - 1 - 6 - tutorials/joomla - 1 - 7 -编程-和-包装- extensions/73654 - 2. - html

正如我所说:写在前端JS中:

$.ajax({
        type: 'GET',
        url: 'index.php', 
        data: {option: 'com_componenetname', task: 'taskname.youroperation', format: 'json', tmpl: 'raw'},
    dataType: 'json',
        async: true, // can be false also
        error: function(xhr, status, error) {
                console.log("AJAX ERROR in taskToggleSuceess: ")
                var err = eval("(" + xhr.responseText + ")");
                console.log(err.Message);
                },
        success: function(response){
                // on success do something
                // use response.valuname for server's data
                        }
                ,
        complete: function() {
            // stop waiting if necessary 
                 }                     
          });
在后端,你应该在com_componentname/controllers/taskname.json.php下有一个文件

文件应该是这样的

class ComponentnameControllerTaskname extends JControllerLegacy (Legacy only J3.0)
{
    public function __construct($config = array())
    {
        parent::__construct($config);
        $this->registerTask('operationname', 'functionname');
    }
    public function functionname() {
            // do something in backend
            echo json_encode(array(''var1' => val1, 'var2' => val2 ) );
        }
}

nibra -我用这个在我所有的joomla网站和它的工作完美。你的评论是错误的,请把我的功劳还给我

相关内容

最新更新