PDA

Ver la Versión Completa : Javascript, funciones o yo que se.


papulo
26-07-2007, 13:37:16
Tengo este código:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<?php
include ("lib/libreria_conexiondb.php");
include ("lib/libreria_funciones_xhtml.php");
include ("lib/libreria_sentencias_SQL.php");
include ("lib/libreria_funciones.php");

//Controlamos la inicialización de las variables ($user_id, $position) y damos valores por defecto en caso de no estarlo.
if (!$_POST["companyaddressid"]){
// echo "No las pilla, Pablo";
$company_address_id=1;
}
else {
// echo "DENTROOO!!";
$company_address_id=$_POST["companyaddressid"];
}

//echo $_POST["companyaddressid"];
//echo $company_address_id;

$company_name = ibase_fetch_object(consulta_managerdb(company_name_SQL($company_address_id)));

$group_company_ids = consulta_managerdb(main_company_groups_id_SQL($company_name->MAIN_COMPANY_ADDRESS_ID)); //Nos devolvera el listado de todos los IDs que comparten el mismo MAIN_ADDRESS_ID

$consulta_address = consulta_managerdb(address_SQL($company_name->MAIN_COMPANY_ADDRESS_ID));

//$consulta_contact = consulta_managerdb(contact_SQL($company_address_id));
?>

<html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Manager</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<script type="text/javascript" src="lib/js/xmlhttp.js"></script>
<script type="text/javascript" src="lib/js/functions.js"></script>
<link rel="stylesheet" type="text/css" href="css/style.css" />
</head>
<body onload="makerequest('table_company_service_product.php?company_address_id=<?php echo $company_address_id; ?>','contact_address'); makerequest('table_company_service_product.php?company_address_id=<?php echo $company_address_id; ?>','company_service_product');">
<div align="center">

<!-- theform.php -->
<div style="padding: 10px;">
<div id="messagebox"></div>
<form method="post" action="mng_data.php">
<input id="companyaddressid" name="companyaddressid" style="width: 150px; height: 16px;" type="hidden" value="" onkeypress="" /><br />
<input id="yourname" style="width: 150px; height: 16px;" type="text" value="" onkeypress="autocomplete(this.value, event)" /><br />
<input type="submit" value="Buscar..." />
</form>
</div>
<div id="autocompletediv" class="autocomp"></div>
<?php
xhtml_table($group_company_ids,$consulta_address,"$company_name->ADDRESS_COMPANY_NAME",true,true);
?>
<div id='contact_address'></div>
<div id='company_service_product'></div>

</body>
</html>

Cuya parte problemática es la siguiente:


<body onload="makerequest('table_company_service_product.php?company_address_id=<?php echo $company_address_id; ?>','contact_address'); makerequest('table_company_service_product.php?company_address_id=<?php echo $company_address_id; ?>','company_service_product');">


Ya que intento llamar a la misma función declarada en
<script type="text/javascript" src="lib/js/functions.js"></script>

Que tiene el siguiente código:

function makerequest(serverPage, objID) {

var obj = document.getElementById(objID);
xmlhttp.open("GET", serverPage);
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
obj.innerHTML = xmlhttp.responseText;
}
}
xmlhttp.send(null);
}

Y no hay forma de llamarla dos veces.

Sin embargo, si solo llamo la función una vez de la siguiente forma:


<body onload="makerequest('table_company_service_product.php?company_address_id=<?php echo $company_address_id; ?>','contact_address');

O uso dos funciones distintas:


<body onload="makerequest('table_company_service_product.php?company_address_id=<?php echo $company_address_id; ?>','contact_address'; alert('solo se que no se nada');">

No se que pasa, joer, me tienen desquiciado.

Y tengo el mismo problema para ejecutar ambas funciones en una etiqueta <tr onclick=...>


¡¡¡AYUDAAAA!!!

Saludos cracks.

roman
26-07-2007, 22:01:05
Hola papulo,

Apenas he visto por encima tu código, pero me llama la atención que en tu función makerequest() haces referencia a un objeto httprequest, que, supongo, creas previamente, posiblemente en xmlhttp.js

Ahora bien, hasta donde yo he visto, el objeto httprequest no es reusable; al menos yo, las veces que lo he utilizado, he debido crear uno nuevo en cada petición.

// Saludos

papulo
27-07-2007, 10:40:57
Y, si no es molestia, ¿como lo resolverías de la forma mas elegante posible?.

roman
27-07-2007, 21:20:37
Bueno, no sé qué tan elegante sea. Yo lo poco que he hecho con ajax, fue una clase JS con un métodos get() y post() que lanzan la petición (la clase tiene una propiedad params, con los valores que se mandan). Dichos métodos son los que internamente construyen el objeto httprequest cada vez.

En tu caso, sería hacerlo dentro de la función makerequest(); estoes, en lugar de usar un objeto global xmlhttp, lo creas ahí mismo.

// Saludos

papulo
27-07-2007, 22:04:24
Valeeee. Ahora lo entiendo (o eso creo). Guardaré como en oro en paño el susodicho ost y el Lunes lo probaré.

Ya diré como me ha ido. Mil gracias.

Saludooos.