error 404 al cargar controller del componente con ajax en un modulo.

Para cuestiones relativas a cualquier tipo de extensión: componentes, módulos y plugins. Todas las versiones de Joomla.

Moderators: carcam, AlexVega, hefesto

Post Reply
dparedes
Joomla! Fledgling
Joomla! Fledgling
Posts: 1
Joined: Wed Jun 23, 2021 4:37 pm

error 404 al cargar controller del componente con ajax en un modulo.

Post by dparedes » Wed Jun 23, 2021 5:58 pm

Hola comunidad.
Estoy desarrollando un paquete de joomla. el cual tiene un modulo y un componente con interfaz en el backend y en el frontend. dentro de mi modulo tengo una interfaz en la cual tengo dos combos o select anidados con los datos provincia y municipio, cuando selecciono el primero deben cambiar los datos del segundo. Esta operación la estoy desarrollando en el evento onchange del select y ejecuto un metodo javascript en el cual ejecuto el ajax que va a interactuar con un servicio api donde me retorna los municipios asociados a esa provincia seleccionada. El ajax va a llamar un método que tengo desarrollado en el controller del componente que es el encargado de interactuar con el servicio y retornar los valores en el response del mismo. El error que estoy teniendo es que las rutas estan bien escritas y la ejecución de la misma me retorna un error 404.
En mi web estoy usando url amigables y por casualidad las desactive y si me funciono bien, pero esa es la cuestión que no puedo desactivar las url amigables. aca les comparto los codigos asociados a lo que tengo hecho para ver en que me pueden ayudar:

vista del modulo con el evento onchange

Code: Select all

<div class="row">
      <div class="col-xs-6">
      		<label>Provincia:</label>
                <select name="provincia" id="provincia" onchange="getMunicipio()">
                     <option value="0" >Seleccione...</option>
                     <?php for ($i=0; $i<count($provincias); $i++) {
                     echo "<option value=" . $provincias[$i]->idprovincia . ">" . $provincias[$i]->provincia . "</option>";}?>
                </select>
      	</div>
      	<div class="col-xs-6">
      		<label>Municipio:</label>
                <select name="municipio" id="municipio">
                        <option value="0" >Seleccione...</option>
                </select>
      	</div>
</div>
Aca tengo el metodo getMunicipio en el js

Code: Select all

function getMunicipio() {
    var myAjaxTrigger = new createAJAX(); //Ajax object handle
    var provincia = document.getElementById('provincia').value;
    myAjaxTrigger.async_call('index.php', 'option=com_poblacion&view=clasificados' + '&task=get_municipio&format=raw' + '&id=' + provincia, endGetMunicipio);
}

function endGetMunicipio(responseText)
{
    document.getElementById('municipio').innerHTML = responseText;
    return;
}
Aca les muestro el metodo get_municipio que se encuentra en el controller del frontend de mi componente:

Code: Select all

function get_municipio() {
        try {
            $provincia = $this->getURLProvincia();
            $idprovincia = JRequest::getVar("id");
            $parametros = array(idprovincia => $idprovincia);
            $gob_token = $this->creaToken($idprovincia);
            $ch = curl_init($provincia[0]->direccion . "/servicio/municipio");
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
            curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
            curl_setopt($ch, CURLOPT_HTTPHEADER, $this->setHeaders($gob_token));
            curl_setopt($ch, CURLOPT_POSTFIELDS, $parametros);
			curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);	
            $response = curl_exec($ch);
            curl_close($ch);
            $array = $this->limpiarCadena($response);
            $result = '<select name="municipio" id="municipio" onchange="getConsejo()">
					<option value="0">Seleccione...</option>';
            for ($i = 0; $i < sizeof($array); $i++) {
                $result .= '<option value="' . $array[$i]->idmunicipio . '" >' . $array[$i]->municipio . '</option>';
            }
            $result .= '</select>';
            echo $result;
        } catch (Exception $e) {
            echo 'error', $e->getMessage();
        }
    }
De antemano les agradezco por la ayuda dada.
Gracias.
Dariel

Post Reply

Return to “Extensiones”