Foros del Web » Programando para Internet » Javascript » Frameworks JS »

Ajax - Php - Ie - If Conditional

Estas en el tema de Ajax - Php - Ie - If Conditional en el foro de Frameworks JS en Foros del Web. Hola a todos, mi problema es muy simple pero no logro darme cuenta del origen! Ya probe cambiar el get por el post, y agregarle ...
  #1 (permalink)  
Antiguo 31/07/2006, 12:48
 
Fecha de Ingreso: julio-2006
Mensajes: 2
Antigüedad: 17 años, 8 meses
Puntos: 0
Ajax - Php - Ie - If Conditional

Hola a todos, mi problema es muy simple pero no logro darme cuenta del origen!
Ya probe cambiar el get por el post, y agregarle el header
header("Cache-Control: no-store, no-cache, must-revalidate");
pero nada.

En mi pagina .html tengo un checkbox que al evento onClick llamar a la funcion modArrayBec (que se encuentra en el archivo ajax.js)

ajax.js
Código:
var request = createRequestObject();
if (!request)
     alert("Error initializing XMLHttpRequest!");


function createRequestObject() {
    var tmp;
    var browser = navigator.appName;
    if(browser == "Microsoft Internet Explorer"){
        tmp = new ActiveXObject("Microsoft.XMLHTTP");
    }else{
        tmp = new XMLHttpRequest();
    }
    return tmp;
}

function modArrayBec(action,arg) {
    request.open('post', 'rpc.php?valor='+action+'&nombre='+arg);
    request.onreadystatechange = func_modArrayBec;
    request.send(null);
}

function func_modArrayBec() {
    if(request.readyState == 4){
        var response = request.responseText;
        document.getElementById('aa').innerHTML = response;
    }
    
}
En mi pagina rpc.php tengo lo siguiente:

Código:
<?
header("Cache-Control: no-store, no-cache, must-revalidate");
session_start();
if(!isset($_SESSION['datos'])){
  $_SESSION['datos'] = array();
}
if($_REQUEST['valor']){
	$_SESSION['datos'] = array_merge($_SESSION['datos'], split(",",$_REQUEST['nombre']));
	$_SESSION['datos'] = array_unique($_SESSION['datos']);	
             echo "true";
}else{
	$indexVal = array_search($_REQUEST['nombre'],$_SESSION['datos']);		
	unset($_SESSION['datos'][$indexVal]);
             echo "false";
}
?>
Ahora, cuando pongo a prueba todo esto y hago un click sobre el checkbox solo parece entrar cuando el checkbox es true, y no por false.

Me parece que hay algun problema con el if porque no va al else cuando mi checkbox es false.
Alguien seria tan amable de probarlo?
Yo ya no se que hacer!!

Gracias, saludos a todos!

Josefina
  #2 (permalink)  
Antiguo 31/07/2006, 17:09
 
Fecha de Ingreso: agosto-2005
Ubicación: Argentina, Capital Federal
Mensajes: 435
Antigüedad: 18 años, 8 meses
Puntos: 2
La forma correcta de usar POST en el método open es la siguiente:

Código PHP:
function modArrayBec(action,arg) {
    
request.open('POST''rpc.php');
    
request.setRequestHeader("Content-Type""application/x-www-form-urlencoded");
    
request.send('valor='+action+'&nombre='+arg);
    
    
request.onreadystatechange func_modArrayBec;

Por otro lado si bien tu variable action puede ser de tipo bool, al enviarla se envía como string, por lo que tu PHP debería quedar:

Código PHP:
<?
session_start
();
if(!isset(
$_SESSION['datos'])){
  
$_SESSION['datos'] = array();
}
if(
$_POST['valor']=="true"){
    
$_SESSION['datos'] = array_merge($_SESSION['datos'], split(",",$_REQUEST['nombre']));
    
$_SESSION['datos'] = array_unique($_SESSION['datos']);    
             echo 
"true";
}elseif(
$_POST['valor']=="false"){
    
$indexVal array_search($_REQUEST['nombre'],$_SESSION['datos']);        
    unset(
$_SESSION['datos'][$indexVal]);
             echo 
"false";
}
?>
Saludos.
__________________
R4DS en español | R4DS en inglés
  #3 (permalink)  
Antiguo 31/07/2006, 18:46
 
Fecha de Ingreso: julio-2006
Mensajes: 2
Antigüedad: 17 años, 8 meses
Puntos: 0
Sii, muchas gracias, ese era el problema.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 02:35.