execute a função php usando ajax para atualizar a variável de modelo phpBB

NOTA: Existem muitos detalhes aqui; portanto, se alguém precisar de uma versão condensada disso, fico feliz em resumir.

Estou tentando executar uma função no meu arquivo php, que por sua vez, atualiza uma variável de modelo. Como exemplo, aqui está uma dessas funções:

function get_vehicle_makes()
{
$sql = 'SELECT DISTINCT make FROM phpbb_vehicles
        WHERE year = ' . $select_vehicle_year;

$result = $db->sql_query($sql);

while($row = $db->sql_fetchrow($result))
{
    $template->assign_block_vars('vehicle_makes', array(
        'MAKE'    => $row['make'],
    ));
}
$db->sql_freeresult($result);
}

Eu sei que essa função funciona. Estou tentando acessar esta função no meu Javascript com:

function updateMakes(pageLoaded) {
    var yearSelect = document.getElementById("vehicle_year");
    var makeSelect = document.getElementById("vehicle_make");
    var modelSelect = document.getElementById("vehicle_model");

    $('#vehicle_make').html('');

    $.ajax({ url: '/posting.php',
            data: {action: 'get_vehicle_makes'},
            type: 'post',
            success:function(result)//we got the response
            {
            alert(result);
            },
            error:function(exception){alert('Exception:'+exception);}
    });
    <!-- BEGIN vehicle_makes -->
        var option = document.createElement("option");
        option.text = ('{vehicle_makes.MAKE}');
        makeSelect.add(option);
    <!-- END vehicle_makes -->

    if(pageLoaded){
        makeSelect.value='{VEHICLE_MAKE}{DRAFT_VEHICLE_MAKE}';
        updateModels(true);
    }else{
        makeSelect.selectedIndex = -1;
        updateModels(false);
    }
}

A seção no meu javascript ...

<!-- BEGIN vehicle_makes -->
        var option = document.createElement("option");
        option.text = ('{vehicle_makes.MAKE}');
        makeSelect.add(option);
<!-- END vehicle_makes -->

... é um loop de bloco e percorrerá a variável de bloco vehicle_makes, definida na função PHP. Isso funciona ao carregar a página porque a página carregada é o new.php para o qual estou tentando fazer uma chamada do Ajax, e todo o PHP é executado nesse arquivo durante o carregamento. No entanto, preciso que a função seja executada novamente, para atualizar essa variável de bloco, pois ela mudará com base em uma alteração de seleção no HTML. Não sei se esse tipo de loop de bloco é comum. Estou aprendendo sobre eles, pois eles são usados com um fórum que eu instalei no meu site, o phpBB. (Procurei nos fóruns de suporte deles ajuda.). Penso que outra solução possível seria retornar uma matriz, mas gostaria de manter a variável de bloco, se possível, por uma questão de consistência.

Este é o bit de código no php que lê o $ _POST e chama a função php:

if(isset($_POST['action']) && !empty($_POST['action'])) {
    $action = $_POST['action'];

    //Get vehicle vars - $select_vehicle_model is used right now, but what the heck.
    $select_vehicle_year = utf8_normalize_nfc(request_var('vehicle_year', '', true));
    $select_vehicle_make = utf8_normalize_nfc(request_var('vehicle_make', '', true));
    $select_vehicle_model = utf8_normalize_nfc(request_var('vehicle_model', '', true));

    switch($action) {
    case 'get_vehicle_makes' :
        get_vehicle_makes();
        break;
    case 'get_vehicle_models' :
        get_vehicle_models();
        break;
    // ...etc...
    }
}

E este é o javascript para executar o Ajax:

function updateMakes(pageLoaded) {
    var yearSelect = document.getElementById("vehicle_year");
    var makeSelect = document.getElementById("vehicle_make");
    var modelSelect = document.getElementById("vehicle_model");

    $('#vehicle_make').html('');

    $.ajax({ url: '/posting.php',
            data: {action: 'get_vehicle_makes'},
            type: 'post',
            success:function(result)//we got the response
            {
            alert(result);
            },
            error:function(exception){alert('Exception:'+exception);}
    });
    <!-- BEGIN vehicle_makes -->
        var option = document.createElement("option");
        option.text = ('{vehicle_makes.MAKE}');
        makeSelect.add(option);
    <!-- END vehicle_makes -->

    if(pageLoaded){
        makeSelect.value='{VEHICLE_MAKE}{DRAFT_VEHICLE_MAKE}';
        updateModels(true);
    }else{
        makeSelect.selectedIndex = -1;
        updateModels(false);
    }
}

O javascript será executado e o ajax será bem-sucedido. Verifiquei a guia de rede e a guia do console e fiz vários testes para confirmar isso. Parece que a variável de bloco não está sendo definida. O que estou tentando fazer é possível? Tenho a sensação de que, para obter essa resposta, precisaremos saber mais sobre o mecanismo de modelos do phpBB e como ele funciona com essas variáveis de modelo. Além disso, apenas para esclarecer, acho que o termo 'variável de modelo' é específico para o phpBB. É o termo que eles usam para variáveis definidas no PHP, para serem acessadas pelos arquivos HTML e javascript. Isso funciona através de uma classe phpBB chamada 'template' e uma função chamada 'assign_block_vars'. Não sei exatamente como isso funciona.

Se alguém fez isso pelo phpBB, ou tem alguma idéia, eu agradeceria.

questionAnswers(1)

yourAnswerToTheQuestion