0

我有一个 jQuery 函数,它从表单中获取数据并将其作为字符串(现在)放入#content.

$(document).ready(function() {

    $('form').submit(function() {
        var results = $(this).serialize();
        var url = '<php? echo JURI::base(); ?>index.php?option=com_mls&task=ListData&' + results;
        $('#content').html(url);
        return false;
    });
});

所以,我知道如何从表单构建查询字符串。

我的控制器中有一个任务,它从 URL 运行 mySQL 查询字符串。

function ListData()
{
    error_reporting(E_ALL);
    $db =& JFactory::getDBO();
    $sort = JRequest::getVar('sort');

        ...some other stuff...

    $query = [some big nasty thing]        

    $db->setQuery($query);
    $array = $db->loadRowList();

    return $array;
}

所以我知道如何查询 mySQL DB 并获得一个array().

然后,我有一个 PHP 脚本,可以将数组数据提取为 HTML 格式:

<?php 

    $array = $this->disparray;

    foreach($array as $key => $value){
        $mlsnum = $value['1'];
            ...some other data gets....
        echo '<div>' . $mlsnum . '</div>';
    }
?>

这就是我卡住的地方。我不知道如何从 jQuery 获取 URL 查询到控制器任务,然后array()将该任务返回的返回到 PHP 脚本中,该脚本将构建 HTML,然后让 AJAX/jQuery 将该数据放入#content.

4

1 回答 1

1

行动分三步进行。首先 ajax 调用 view.raw.php 然后你从模型中加载/添加/删除一些数据,并根据需要自定义它。然后以 JSON 格式打印它 - 将其发送回 ajax,然后 ajax 将其放入 html。

$(document).ready(function() {
    var url = '<php? echo JURI::base(); ?>index.php?option=com_mls&task=ListData&format=raw&' + results;
    $.ajax({
        url: url,
        dataType: 'json',
        success: function(json) {

            if (json['output']) {
                $('#content').html(json['output']);
            }

            if (json['redirect']) {
                location = json['redirect'];
            }
        }
    });
});

这将与 /com_mls/(default_view)/view.raw.php

在那里,你可能应该做类似的事情

class mlsView_your_view... extends JView
{
    public function display($tpl = null) {

        $task = JRequest::getCmd('task', 0);
        // see what should we do now
        switch( $task ){
            case 'ListData':
                $data = $this->get_data();
            break;
        }

        // Get the document object.
        $document = JFactory::getDocument();

        // Set the MIME type for JSON output.
        $document->setMimeEncoding('application/json');

        // Change the suggested filename.
        //JResponse::setHeader('Content-Disposition','attachment;filename="resp.json"');

        // Output the JSON data.
        echo json_encode($data);
    }

    function get_data() {

        // load model
        $model = $this->getModel('ajax');

        // get data from model
        $data = $model->getSomeData();

        if( is_null($data) ){
            return array( 'error' => 'missing data.');
        }

        $data['output'] = $model->prepareData($data);

        return array( $data );
    }

....ETC.... }

于 2012-12-13T21:35:50.563 回答