Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Frameworks JS (http://www.forosdelweb.com/f127/)
-   -   Ajax - Php - Ie - If Conditional (http://www.forosdelweb.com/f127/ajax-php-ie-if-conditional-413552/)

alita77 31/07/2006 12:48

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:'(

zaqpz 31/07/2006 17:09

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.

alita77 31/07/2006 18:46

Sii, muchas gracias, ese era el problema.:arriba:


La zona horaria es GMT -6. Ahora son las 00:26.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.