Requisições Ajax no validateForm

É possível fazer requisições ajax no validateForm? Tentei utilizar JQuery, mas o mesmo não está disponível no validateForm, e eu necessito fazer uma requisição Ajax quando um processo é finalizado.

Utilizei o seguinte código:

try{ if(window.XMLHttpRequest){ throw "XMLHttpRequest"; }else if(window.ActiveXObject){ throw "ActiveXObject" }else{ throw "Ajax não suportado"; } }catch(exception){ throw exception.message; }

mas obtive a seguinte mensagem de erro: "window" is not defined

uma solução encontrada foi declarar uma function beforeSendValidate = function(){} no javascript do formulário, que roda antes do validateForm

O validateForm ou qualquer outro evento de formulário executado no lado do server não tem suporte a xmlhttprequest. Nesses eventos creio que uma opção seria cadastrar um serviço rest no painel de controle e chamar ele via
fluigAPI.getAuthorizeClientService(). Conforme a documentação Autorização para client de Serviços REST - TOTVS Fluig - TDN

@Diogo Boergershausen, eu utilizei o servico no dataset, mas retorna o erro de toJSON como não definido

Eu tenho um servidor em PHP que realizo integrações via JSON em scripts do formulário/processo (lado do servidor)

Faço assim:



 // verificar orçamento, envia os dados para o PHP 14 -> primeira vez, 36 -> segunda vez
    if ( (sequenceId == 14) || (sequenceId == 36) ){

        log.warn("Iniciando a verificação de orçamento. ");

        var objeto = {};
        objeto.solicitacao = "" + getValue("WKNumProces");

        var dados = JSON.stringify(objeto);
        log.info("######################### ENVIO JSON ##################################");
        log.info("######################### ENVIO JSON => ENVIO ##################################");
        log.warn("ENVIADO AO REST +====> " + dados );
        log.info("######################### ENVIO JSON => ENVIO ##################################");


        /**
         * 
         *  Busca e realiza os calculos dos orçamentos no portal PHP 
         * 
         */
        var urlAPI = "http://MEU-SERVIDOR-PHP/DIRETORIO/fluig/services/rest/requisicao_compra/verifica_orcamento/";
        var url = new java.net.URL(urlAPI);
        var connection = url.openConnection();

        // POST para enviar os dados
        connection.setRequestMethod("POST");

        // Tipo de dado a ser enviado
        connection.setRequestProperty("Accept", "text/json");

        // Send post request
        connection.setDoOutput(true);

        //realiza o envio do json para o servidor
        var wr = new java.io.DataOutputStream(connection.getOutputStream());
        wr.writeBytes(dados);
        wr.flush();
        wr.close();

        // caso dê erro na requisição, exibirá mensagem ao usuário.
        if (connection.getResponseCode() != 200) {
            throw connection.getResponseCode();
        }

        // trata o retorno do php
        var br = new java.io.BufferedReader(new java.io.InputStreamReader(connection.getInputStream()));

        var result = "";
        var orcamentoJsonResponse = "";
        while ((output = br.readLine()) != null) {

            orcamentoJsonResponse += output;
        }        


        // Inicia a construção da tabela pai x filho para solicitar o aporte de orçamento
        var childData = new java.util.HashMap();

        log.info("######################### TRATATIVA JSON ##################################");
        log.info("######################### TRATATIVA JSON => RETORNO ##################################");
        log.warn("RETORNO DO REST +====> " + orcamentoJsonResponse );
        log.info("######################### TRATATIVA JSON => RETORNO ##################################");

        log.info(JSON.parse(orcamentoJsonResponse));

        var orcamentosArray = JSON.parse(orcamentoJsonResponse);

        if ( orcamentosArray.length > 0 ){

            for ( var i = 0; i < orcamentosArray.length; i++ ){

                // verifica flag de orcamento disponível, se for diferente e true, cria uma nova linha para estes itens.
                if ( orcamentosArray[i].possuiOrcamento != "true" ) {

                    var msg = " Centro de custo ==> " + orcamentosArray[i].centroCusto;
                    msg += " Conta Contábil ==> " + orcamentosArray[i].contaContabil;
                    msg += " Data de referencia ==> " + orcamentosArray[i].dataReferencia;
                    msg += " Valor Disponivel ==> " + orcamentosArray[i].valorDisponivel;

                    log.info(msg);

                    // centro de custo do calculo
                    childData.put("aprCentroCusto", orcamentosArray[i].centroCusto );

                    // conta contabil do calculo
                    childData.put("aprContaContabil", orcamentosArray[i].contaContabil );

                    // Valor total para este centro de custo / conta contabil para esta requisicao
                    childData.put("valorTotalCC", orcamentosArray[i].valorNecessario );
                    childData.put("valorTotalCCRaw", orcamentosArray[i].valorNecessario );

                    // Orçamento disponível para este centro de custo / conta contabil
                    childData.put("orcTotalDisponivel", orcamentosArray[i].valorDisponivel );
                    childData.put("orcTotalDisponivelRaw", orcamentosArray[i].valorDisponivel );

                    // valor que será solicitado aporte
                    childData.put("valorAporte", orcamentosArray[i].valorDiferenca*-1 );
                    childData.put("valorAporteRaw", orcamentosArray[i].valorDiferenca*-1 );

                    childData.put("obsAporte", msg );
                    hAPI.addCardChild("tableAporte", childData);

                }

            }

            hAPI.setCardValue("rcPossuiOrcamento", "Não");

        }else{

            hAPI.setCardValue("rcPossuiOrcamento", "Sim");

        }



        log.info("######################### TRATATIVA JSON ##################################");
        log.info( 'conectou ====> ' + orcamentoJsonResponse );

         log.info("##################### dados do form ######################");
         //log.info(JSON.stringify(dadosForm));
         log.info("##################### dados do form ######################");

    }