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().

次に、配列データを HTML 形式にプルする PHP スクリプトがあります。

<?php 

    $array = $this->disparray;

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

ここが私が立ち往生している場所です。array()jQuery からコントローラ タスクへの URL クエリを取得し、そのタスクから返された を PHP スクリプトに取得して HTML を構築し、AJAX/jQuery を取得してそのデータを .xml に入れる方法がわかりません#content

4

1 に答える 1

1

Action is going on in 3 steps. First ajax call view.raw.php then you load/add/delete some data from model, and customize it as you want. Then you print it in JSON format - send it back to ajax, and then ajax put that into 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'];
            }
        }
    });
});

this will communicate with /com_mls/(default_view)/view.raw.php

in there, you should probably do something like

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 に答える