Hola, no se si esto debería ir en este apartado. Resulta que estoy intentando agregar unas opciones a un formulario de joomla. En concreto unos checkbox. Cada uno va asociado a un precio que se le suma al total. Quiero el al pinchar sobre el checkbox aparezca el precio total pero sin tener que enviar el formulario. Es decir, que al seleccionar el checkbox aprazca reflejado en una campo el precio. Bien, se me ocurrio hacerlo con ajax. Concretamente utilizando estas dos funciones que ya había probado antes en otro proyecto y me habían funcionado:
Código PHP:
function obtiene_http_request()
{
var req = false;
try
{
req = new XMLHttpRequest(); /* p.e. Firefox */
}
catch(err1)
{
try
{
req = new ActiveXObject("Msxml2.XMLHTTP");
/* algunas versiones IE */
}
catch(err2)
{
try
{
req = new ActiveXObject("Microsoft.XMLHTTP");
/* algunas versiones IE */
}
catch(err3)
{
req = false;
}
}
}
return req;
}
var miPeticion = obtiene_http_request();
function from(id,ide,url){
var mi_aleatorio=parseInt(Math.random()*99999999);//para que no guarde la página en el caché...
var vinculo=url+"?id="+id+"&rand="+mi_aleatorio;
//alert(vinculo);
miPeticion.open("GET",vinculo,true);//ponemos true para que la petición sea asincrónica
miPeticion.onreadystatechange=miPeticion.onreadystatechange=function(){
if (miPeticion.readyState==4)
{
//alert(miPeticion.readyState);
if (miPeticion.status==200) //Aqui es donde falla !!
{
alert(miPeticion.status);
//var http=miPeticion.responseXML;
var http=miPeticion.responseText;
document.getElementById(ide).innerHTML= http;
}else
{
alert(miPeticion.status);
var http=miPeticion.responseText;
document.getElementById(ide).innerHTML= http;
}
}/*else
{
document.getElementById(ide).innerHTML="<img src='../spinningred.gif' title='cargando...' />";
}*/
}
miPeticion.send(null);
}
En el formulario se llamaría así:
Código HTML:
.
.
.
.
<td colspan="2"><?php echo JText::_( 'Servicio de mayordomo ' ); ?><input type="checkbox" name="mayordomo" onchange="from(document.adminForm.mayordomo.value,'precio','servicios.php')" value="mayordomo" /></td>
.
.
.
.
La pagina servicios.php sería donde se procesa el tema de los precios, pero el tema es que no llega allí porque la función de ajax no termina de ejecutarse ya que no es igual a 200 (que significa que la petición es ok).
¿A que puede ser debido? Se me ocurre que pudiera ser alguna problema de joomla o del servidor. Está alojado en 1and1.