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

[SOLUCIONADO] Aplicacion Web no funciona en IE8 e IE7

Estas en el tema de Aplicacion Web no funciona en IE8 e IE7 en el foro de Frameworks JS en Foros del Web. Hola amigos, estoy desesperada, resulta que estoy en fases finales del desarrollo de mi aplicacion web, es la primera que hago, y en varias pc ...
  #1 (permalink)  
Antiguo 04/12/2012, 14:09
 
Fecha de Ingreso: agosto-2012
Ubicación: México
Mensajes: 106
Antigüedad: 11 años, 8 meses
Puntos: 6
Exclamación Aplicacion Web no funciona en IE8 e IE7

Hola amigos, estoy desesperada, resulta que estoy en fases finales del desarrollo de mi aplicacion web, es la primera que hago, y en varias pc q tengo funciona bien en IE9, firefoz y crhome, pero resulta que me dice el cliente que no le funciona, le pido una pantalla y resulta que esta usando IE8, y consigo una PC con IE8 y en efecto, algunas cosas que hago con javascript(jquery) simplemente no hace nada mi aplicacion, y en IE7 definitivamente no funciona nada.
Agrege esto al header para ver si forzaba la compatibilidad:

Código HTML:
Ver original
  1. <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7"/>

Pero como si nada..
Ayudenme no se que hacer, lo que especificamente no funciona en IE8 es lo siguiente:

Código Javascript:
Ver original
  1. function colocaIVA(){
  2.     //valor tipo de producto (computo, plasma)
  3.     var tipo_prod =$('#tipo option:selected').val();
  4.     //valor garantia seleccionada
  5.     var selGarantia =$('#garantia option:selected').val();
  6.    
  7.     //valida que cuando se seleccione un rango se haya seleccionado un tipo de garantia
  8.     if (selGarantia==0) {
  9.         alert("Debe seleccionar un TIPO DE GARANTIA");
  10.         $('#financiamiento option[value="0"]').attr("selected", true);
  11.         //$('#garantia').val('0');
  12.     }else{
  13.         switch (tipo_prod){
  14.             case "C00":
  15.             //enviar parametros del form a PHP para que realize consulta en BDD
  16.                 $.post("consultaDatos.php",{
  17.                         //tipo_prod:$('#tipo option:selected').val(),
  18.                         rango:$('#rango option:selected').val(),
  19.                         tipo_garantia:$('#garantia option:selected').val(),
  20.                         financiamiento:$('#financiamiento option:selected').val()
  21.                     } ,
  22.                     function(data)
  23.                     {
  24.                         if (data=="no"){
  25.                             alert("No se encontro datos en BDD");
  26.                         }else{
  27.                             //obtengo las variables de php y las almaceno en variables individuales
  28.                             var recoge=data.split(",");
  29.                             SKU = recoge[0];
  30.                             mensualidad = recoge[1];
  31.                             iva = recoge[2];
  32.                             financiamiento= recoge[3];
  33.                             //alert(SKU+" "+mensualidad+" "+iva+" "+financiamiento);
  34.                            
  35.                             //REALIZO OPERACIONES PARA OBTENER EL SUBTOTAL,IVA,SUBTOTAL.
  36.                             var subtotal = mensualidad * financiamiento;
  37.                             subtotal = parseFloat(subtotal.toFixed(2));
  38.                             var ivaTotal = subtotal * iva;
  39.                             ivaTotal = parseFloat(ivaTotal.toFixed(2));
  40.                             var total = parseFloat(subtotal+ivaTotal);
  41.                             total =parseFloat(total.toFixed(2));
  42.                             var pagos = total/financiamiento;
  43.                             pagos = pagos.toFixed(2);
  44.                             //IMPRIMO EL PANTALLA LOS DATOS
  45.                             $("#SKU").html(SKU);
  46.                             $("#subtotal").html(subtotal);
  47.                             $("#iva").html(ivaTotal);
  48.                             $("#total").html(total);
  49.                             $("#mensualidad").html(pagos);
  50.                            
  51.                             //si el costo es de 0.00 no aplica una mensualidad
  52.                             if(mensualidad=="0.00"){
  53.                                 alert ("No aplica este financiamiento");
  54.                                 $('#financiamiento option[value="0"]').attr("selected", true);
  55.                                 //$("#SKU").hide();
  56.                             }
  57.                             //si el financiamiento es a 1 mes no aplican mesualidades
  58.                             if(financiamiento=="1"){
  59.                                 $("#mensualidad").text("No aplica");
  60.                             }
  61.                             //alert (subtotal+" "+ivaTotal+" "+total);
  62.                         }//end else si el data envia algo
  63.                     }//termina FUNTION (data)
  64.                 );//termina FUNCION .post
  65.                
  66.             break;
  67.             case "P00":
  68.                 //enviar parametros del form a PHP para que realize consulta en BDD
  69.                 $.post("consultaDatosP.php",{
  70.                         //tipo_prod:$('#tipo option:selected').val(),
  71.                         rangoP:$('#rangoP option:selected').val(),
  72.                         tipo_garantia:$('#garantia option:selected').val(),
  73.                         financiamiento:$('#financiamiento option:selected').val()
  74.                     } ,
  75.                     function(data)
  76.                     {
  77.                         if (data=="no"){
  78.                             alert("No se encontro datos en BDD");
  79.                         }else{
  80.                        
  81.                         //obtengo las variables de php y las almaceno en variables individuales
  82.                             var recoge=data.split(",");
  83.                             SKU = recoge[0];
  84.                             mensualidad = recoge[1];
  85.                             iva = recoge[2];
  86.                             financiamiento= recoge[3];
  87.                             //alert(SKU+" "+mensualidad+" "+iva+" "+financiamiento);
  88.                            
  89.                             //REALIZO OPERACIONES PARA OBTENER EL SUBTOTAL,IVA,SUBTOTAL.
  90.                             var subtotal = mensualidad * financiamiento;
  91.                             subtotal = subtotal.toFixed(2);
  92.                             var ivaTotal = subtotal * iva;
  93.                             ivaTotal = ivaTotal.toFixed(2);
  94.                             var total = parseFloat(subtotal+ivaTotal);
  95.                             total = total.toFixed(2);
  96.                             var pagos = total/financiamiento;
  97.                             pagos = pagos.toFixed(2);
  98.                             //IMPRIMO EL PANTALLA LOS DATOS
  99.                             $("#SKU").html(SKU);
  100.                             $("#subtotal").html(subtotal);
  101.                             $("#iva").html(ivaTotal);
  102.                             $("#total").html(total);
  103.                             $("#mensualidad").html(pagos);
  104.                             //si el costo es de 0.00 no aplica una mensualidad
  105.                             if(mensualidad=="0.00"){
  106.                                 alert ("No aplica este financiamiento");
  107.                                 //$("#SKU").hide();
  108.                                 $('#financiamiento option[value="0"]').attr("selected", true);
  109.                             }
  110.                             //si el financiamiento es a 1 mes no aplican mesualidades
  111.                             if(financiamiento=="1"){
  112.                                 $("#mensualidad").text("No aplica");
  113.                             }
  114.                         }//termina else del data si regresa datos
  115.                     }//termina FUNTION (data)
  116.                 );//termina FUNCION .post
  117.             break;
  118.         }//termina switch
  119.     }//termina else
  120. }//TERMINA FUNCION COLOCARIVA

Agradeceria su ayuda....
  #2 (permalink)  
Antiguo 04/12/2012, 16:50
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 12 años, 7 meses
Puntos: 397
Respuesta: Aplicacion Web no funciona en IE8 e IE7

Hola teniendo en cuenta de que el maligno, no soporta algunos selectores css prueba esto:

1. En este caso por ejemplo $('#garantia option:selected').val(), si #garantia es el select coloca $('#garantia).val();
2. Cambia .attr("selected", true); por .attr("selected", "selected");
3. Veo algunas variables como por ejemplo SKU que no tienen var, en el maligno, si no declaras una variable con var, el te genera problemas, despues de haberla declarado, no es necesario volver a redeclararla, una mejor explicacion aqui

Trata estos cambios, y nos cuentas como te fue

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.
  #3 (permalink)  
Antiguo 04/12/2012, 17:15
 
Fecha de Ingreso: agosto-2012
Ubicación: México
Mensajes: 106
Antigüedad: 11 años, 8 meses
Puntos: 6
Respuesta: Aplicacion Web no funciona en IE8 e IE7

Amigo ya debugee y resulta que no es el .html si no la funcion SPLIT la que no es reconocida por el IE8 :/ ya que los otros .html() si me los imprime sin problema, lo que estoy intentando ahora es pasar los valores y recibirlos con JSON aunque la verdad tengo que aprender como hacerlo, pero estoy viendo que JSON no ocupa la funcion split ya que envia los datos por medio de un array asociativo, aunque si tuvieras un ejemplo sencillo y facil de enviar y recibir variables con JSON te lo agradeceria mucho! Gracias por tu respuesta.
  #4 (permalink)  
Antiguo 04/12/2012, 17:26
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 12 años, 7 meses
Puntos: 397
Respuesta: Aplicacion Web no funciona en IE8 e IE7

Si necesitas traer datos por medio de json y con ese metodo es de esta manera:

Código Javascript:
Ver original
  1. $.post("test.php", { params },
  2.  function(data){
  3.    //funcion success
  4.  }, "json");
lo mas importante del caso es que si en php retornas un array, necesitas hacer esto

Código PHP:
Ver original
  1. <?php echo json_encode(array("name"=>"John","time"=>"2pm")); ?>

y para acceder a estos valores desde jquery solo basta en la funcion que se ejecuta del $.post

Código Javascript:
Ver original
  1. function(data){
  2.    alert(data.name);
  3.  }

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.
  #5 (permalink)  
Antiguo 05/12/2012, 09:16
 
Fecha de Ingreso: agosto-2012
Ubicación: México
Mensajes: 106
Antigüedad: 11 años, 8 meses
Puntos: 6
Respuesta: Aplicacion Web no funciona en IE8 e IE7

Hola, pues estoy intentando hacer eso, solo que no me sale.. :/ creo que el problema es que no se bien como recibir los datos en jquery en formato json, podrias ayudarme a ver la luz, la verdad es la primera vez que trabajo con json :s, mira esto tengo a gorsso modo en mi php, estoy guardando resultados de mis consultas en un array de formato json, (segun yo..) y al final la envio en un json encode a jquery(segun yo..)

Código PHP:
Ver original
  1. $arr = array();
  2.         while ($row = mysql_fetch_object($ejecuta))
  3.         {
  4.             $arr[] = array('iva' => $row->iva,);
  5.         }
  6.         while ($row2 = mysql_fetch_array($ejecuta2))
  7.         {
  8. while ($row2 = mysql_fetch_object($ejecuta2))
  9.         {
  10.         //recupera el IVA de la sucursal
  11.         $arr[] = array('clave_garantia' => $row2->clave_garantia,
  12.                        'SKU' => $row2->SKU_garantia,);
  13.                 }
  14. while ($row3 = mysql_fetch_object($ejecuta3))
  15.             {
  16.             //recupera el IVA de la sucursal
  17.             $arr[] = array('mensualidad' => $row3->costo,);
  18.             }
  19.  
  20. //ENVIO A JQUERY
  21. echo json_encode($arr);

Bueno segun yo ahi estoy metiendo todos mis valores en un array asociativo en formato JSON y lo estoy enviando a jquery.. pero en mi jquery no se como leerlo, yo tengo esto :S pero no me funciona.. podriaan ayudarme ? :S

Código Javascript:
Ver original
  1. $.post("consultaDatos.php",{
  2.                         //tipo_prod:$('#tipo option:selected').val(),
  3.                         rango:$('#rango option:selected').val(),
  4.                         tipo_garantia:$('#garantia option:selected').val(),
  5.                         financiamiento:$('#financiamiento option:selected').val()
  6.                     } ,
  7.                     function(data)
  8.                     {
  9.                         if (data=="no"){
  10.                             alert("No se encontro datos en BDD");
  11.                         }else{
  12.                             //obtengo las variables de php y las almaceno en variables individuales
  13.                             var dataJson = eval(data);
  14.                              for(var i in dataJson){
  15.                             alert(dataJson[i].iva + " _ " + dataJson[i].clave_garantia + " _ " + dataJson[i].SKU);
  16.                             }
  17.                                                            
  18.                             //REALIZO OPERACIONES PARA OBTENER EL SUBTOTAL,IVA,SUBTOTAL.
  19.                             var subtotal = mensualidad * financiamiento;
  20.                             subtotal = parseFloat(subtotal.toFixed(2));
  21.                             var ivaTotal = subtotal * iva;
  22.                             ivaTotal = parseFloat(ivaTotal.toFixed(2));
  23.                             var total = parseFloat(subtotal+ivaTotal);
  24.                             total =parseFloat(total.toFixed(2));
  25.                             var pagos = total/financiamiento;
  26.                             pagos = pagos.toFixed(2);
  27.                             //IMPRIMO EL PANTALLA LOS DATOS
  28.                             $("#SKU").html(SKU);
  29.                             $("#subtotal").html(subtotal);
  30.                             $("#iva").html(ivaTotal);
  31.                             $("#total").html(total);
  32.                             $("#mensualidad").html(pagos);
  33.                            
  34.                             //si el costo es de 0.00 no aplica una mensualidad
  35.                             if(mensualidad=="0.00"){
  36.                                 alert ("No aplica este financiamiento");
  37.                                 $('#financiamiento option[value="0"]').attr("selected", true);
  38.                                 //$("#SKU").hide();
  39.                             }
  40.                             //si el financiamiento es a 1 mes no aplican mesualidades
  41.                             if(financiamiento=="1"){
  42.                                 $("#mensualidad").text("No aplica");
  43.                             }
  44.                             //alert (subtotal+" "+ivaTotal+" "+total);
  45.                         }//end else si el data envia algo
  46.                     }//termina FUNTION (data)
  47.                 );//termina FUNCION .post

Gracias!
  #6 (permalink)  
Antiguo 05/12/2012, 13:24
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 12 años, 7 meses
Puntos: 397
Respuesta: Aplicacion Web no funciona en IE8 e IE7

Mira este link, trabajar con json no es tan complejo

Viendo tu codigo, para hacer esta implementacion debes hacer lo siguiente

1. En php hacer la validacion de si hay o no hay datos a mostrar algo asi

Código PHP:
Ver original
  1. if(count($arr)>0){
  2.      $arr['datos'] = 'si';
  3. }else{
  4.       $arr['datos'] = 'no';    
  5. }
  6. echo json_encode($arr);

Ese es un ejemplo, aunque tu debes de ver como te das cuenta si hay datos que mostrar o no

2. );//termina FUNCION .post no veo que hayas colocado el json que te comente para traer los datos como json

3. Aqui

Código Javascript:
Ver original
  1. function(data)
  2.                     {
  3.                         if (data=="no"){
  4.                             alert("No se encontro datos en BDD");
  5.                         }else{
  6.                             //obtengo las variables de php y las almaceno en variables individuales
  7.                             var dataJson = eval(data);
  8.                              for(var i in dataJson){
  9.                             alert(dataJson[i].iva + " _ " + dataJson[i].clave_garantia + " _ " + dataJson[i].SKU);
  10.                             }

data es una variable que traera todo el arreglo ya en formato json, si hiciste lo que te comente en el punto 2, entonces no necesitas usar eval, que ya de por si no es para nada recomendable, por ende, simplemente llamas de esta manera las variables json

No se que estructura tendra el arreglo, pero en sintesis va de la siguiente manera

si quieres acceder y ver si hay datos o no solo basta con colocar

if (data.datos=="no"){

datos es el indice del array que se creo en el punto 1, como ves es sencillo de traer los datos con json y jquery y no es tan complejo para acceder a ellos pq tu ya sabes que estructura y que variables se obtendran cuando hagas la consulta

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.
  #7 (permalink)  
Antiguo 10/12/2012, 13:47
 
Fecha de Ingreso: agosto-2012
Ubicación: México
Mensajes: 106
Antigüedad: 11 años, 8 meses
Puntos: 6
Respuesta: Aplicacion Web no funciona en IE8 e IE7

Pues amigo que crees, que ahora me dicen que no es IE8 que es IE6 !!!!!!!!!!!! que me mato! jajajaa, trabaje todo el fin de semana para que sirviera la pagina, por que ahi deplano no funcionaba nada, pero aun asi lo que aun sigue sin funcionar es cuando voy con el .post{} a hacer la consulta a php a bdd y regresarle las varibles, me parece que no es compatible con ie6, asi que dije, usare javascript puro...pero estaba leyendo que IE6 no es compatible con el objeto XMLHttpRequest, :s a alguien le ha pasado esto? como puedo solucionarlo, tengo que ir a buscar unos datos a mi BDD y de ahi hacer calculos con ellos y mostrar los resultados en la misma pantalla....
  #8 (permalink)  
Antiguo 10/12/2012, 14:13
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 12 años, 7 meses
Puntos: 397
Respuesta: Aplicacion Web no funciona en IE8 e IE7

Mira este link

Saludos y Suerte
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.
  #9 (permalink)  
Antiguo 11/12/2012, 13:41
 
Fecha de Ingreso: agosto-2012
Ubicación: México
Mensajes: 106
Antigüedad: 11 años, 8 meses
Puntos: 6
Respuesta: Aplicacion Web no funciona en IE8 e IE7

Pues que crees, despues de buscar y buscar encontre la solucion, y la comparto por si a alguien le llegase a servir, son tres archivos listos para copy paste para que los prueben, incluyo el script de la base de datos con los inserts :)


Script de base de datos para las pruebas.
Código MySQL:
Ver original
  1. create database ajax_demo
  2.  
  3. firstname varchar(40),
  4. lastname varchar(40),
  5. age int,
  6. hometown varchar(40),
  7. job varchar(40),
  8. );
  9.  
  10. insert into user (firstname,lastname,age,hometown,job) VALUES   ("Peter","Griffin",41,"Quahog","Brewery"),
  11.                                                                 ("Lois","Griffin",40,"Newport","Piano Teacher"),
  12.                                                                 ("Joseph","Swanson",39,"Quahog","Police Officer"),
  13.                                                                 ("Glenn","Quagmire",41,"Quahog","Pilot")

Codigo del HTML
Código HTML:
Ver original
  1. <script type="text/javascript" language="javascript" src="findUser.js"></script>
  2. </head>
  3.  
  4. <select id="financiamiento" onchange="colocaIVA()">
  5.                 <option value="0">Escoge...</option>               
  6.                 <option value="1">1 Pago</option>
  7.                 <option value="12">12 meses</option>
  8.                 <option value="24">24 meses</option>
  9.                 <option value="36">36 meses</option>
  10.             </select></br>
  11. <select name="users" id="user" onchange="showUser()">
  12. <option value="0">Select a person:</option>
  13. <option value="1">Peter Griffin</option>
  14. <option value="2">Lois Griffin</option>
  15. <option value="3">Joseph Swanson</option>
  16. <option value="4">Glenn Quagmire</option>
  17. </form>
  18. <br>
  19. <div id="txtHint"><b>Aqui se mostrara el nombre</b></div>
  20. <div id="txtHint2"><b>Aqui se mostrara el apellido</b></div>
  21. <div id="txtHint3"><b>Aqui se mostrara el r</b></div>
  22.  
  23. </body>
  24. </html>

"findUser.js" Codigo del JS con la COMPATIBILIDAD PARA EL IE6
Código Javascript:
Ver original
  1. //se ejecuta con un onchage del select:option del html,
  2. //puede ser cualquier otro evento de JS: onclick, onblur, etc.....
  3. function showUser()
  4. {
  5. var selObj2 = document.getElementById('financiamiento');
  6. var str2 = selObj2.selectedIndex;
  7. var selObj3 = document.getElementById('user');
  8. var str3 = selObj3.selectedIndex;
  9. //si escogio la primera opcion, le dice que no se encontro datos
  10. //e imprime vacio el div txtHint2
  11. if (str3=="0")
  12.   {
  13.   document.getElementById("txtHint").innerHTML="No se encontro datos";
  14.   document.getElementById("txtHint2").innerHTML="";
  15.   return;
  16.   }
  17.   //Aqui esta el ajax para los distintos navegadores.
  18. if (window.XMLHttpRequest)
  19.   {// code for IE7+, Firefox, Chrome, Opera, Safari
  20.   xmlhttp=new XMLHttpRequest();
  21.   }
  22. else
  23.   {// code for IE6, IE5
  24.   xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  25.   }
  26.   //Con esta funcion recibimos variables de PHP para pintarlas en pantalla
  27. xmlhttp.onreadystatechange=function()
  28.   {
  29.   if (xmlhttp.readyState==4 && xmlhttp.status==200)
  30.     {
  31.     //aqui es donde estamos recibiendo con el responseText, y
  32.     //con el metodo split separamos el echo que recibimos de PHP
  33.     var separar=xmlhttp.responseText.split(",");
  34.         var nombre = separar[0];
  35.         var apellido = separar[1];
  36.         var r = separar[2];
  37.         //aqui estamos pintando en los divs los valores que deseemos
  38.     document.getElementById("txtHint").innerHTML=nombre;
  39.     document.getElementById("txtHint2").innerHTML=apellido;
  40.     document.getElementById("txtHint3").innerHTML=r;
  41.     }
  42.   }
  43.   //Aqui es en donde estamos enviando las variables al arhivo PHP y
  44.   //la variable seleccioada del HTML selected:option
  45. xmlhttp.open("GET","getuser.php?q="+str3+"&r="+str2,true);
  46.  
  47. xmlhttp.send();
  48.  
  49. // :) y eso es todo!!! esta ya esta modificada para parseo de variables
  50. //y para tenerlo todo en archivos separados, .html, .js, .php
  51.  
  52. }

getuser.php CODIGO PHP que hace la conexion y consuta a BDD
Código PHP:
Ver original
  1. <?php
  2. //leemos la variable que nos envia Javascript
  3. $q=$_GET["q"];
  4. $r=$_GET["r"];
  5. //conecatmos ala bdd
  6. $con = mysql_connect('localhost', 'root', '');
  7. if (!$con)
  8.   {
  9.   die('Could not connect: ' . mysql_error());
  10.   }
  11. mysql_select_db("ajax_demo", $con);
  12. //realizamos consulta a BDD
  13. $sql="SELECT * FROM user WHERE id = '$q'";
  14. $result = mysql_query($sql);
  15. //Obtenemos los datos de la consulta y enviamos a JS
  16. while($row = mysql_fetch_array($result))
  17.   {
  18.   $fistname= $row['firstname'] . "</td>";
  19.   $lastname= $row['lastname'] . "</td>";
  20.   $age= $row['age'] . "</td>";
  21.   $hometown= $row['hometown'] . "</td>";
  22.   $job= $row['job'] . "</td>";
  23.   //con este echo se envia las variables separadas por "," o cualquier otro caracter
  24.     echo $fistname.",".$lastname.",".$r;
  25.   }
  26. //termianos conexion a bdd
  27. ?>

Muchas gracias por la ayuda, espero que esto le sirva a alguien mas, ya es cuestion de modificarlo y adaptarlo a sus aplicaciones, listo para copy paste :P

Etiquetas: compatibilidad, ie8, javascript
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




La zona horaria es GMT -6. Ahora son las 08:17.