Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    IE 6+ajax+innerHTML = errore di runtime sconosciuto

    Le stranezze di IE sono di più di quante credessi...
    Ho una funzione ajax.
    Questa, quando il readyState è a 4, "riempie" l'elemento con innerHTML.

    Il problema è che quando fa ciò, IE, e solo IE, incappa in un "errore di runtime sconosciuto".

    Se al posto si usare innerHTML, visualizzo il responseText con un alert, questo viene visualizzato correttamente

    C'è qualche modo per forzare IE a fare l'innerHTML?

    codice:
    function ajaxRequest(url, funzione, postFlag, postData) 
    {
    var myEl=this;
    
    
    var req=new richiesta(); //Questo setta la richiesta in modo crossbrowser
    req.open("POST", url, true);
    req.send(postData?postData:null);
    
    
    
    req.onreadystatechange = function() 
    	{
    
    	if (req.readyState==4) 
    		{
    			//alert(req.responseText);
    			myEl.innerHTML=req.responseText; 
    			//req.abort();
    		}
    	}
    }

  2. #2
    Ok, mi rispondo da solo:
    IE, da come ho trovato in questo link, http://www.sitepoint.com/forums/show...=308921&page=2

    pare avere problemi se ci sono elementi con id uguali nella pagina inclusa e nella pagina includente...
    Si può risolvere ciò?

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    Bhè, è proprio un errore concettuale avere due o più id uguali. L'id è univoco, quindi sono gli altri browser per una volta, a sbagliare consentendo id duplicati
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  4. #4
    Originariamente inviato da Andrea1979
    Bhè, è proprio un errore concettuale avere due o più id uguali. L'id è univoco, quindi sono gli altri browser per una volta, a sbagliare consentendo id duplicati

    Che l'id è univoco questo è normale, ma ciò succede anche se un elemento ha name="ciao" e un altro ha id="ciao"...

    Semplicemente IE non è che decide di non scrivere elementi con lo stesso id, bensì non lo sa proprio "fare".
    Se questa fosse una caratteristica voluta credo che ci avrebbero messo un messaggio di errore più specifico.

    Secondo me il browser deve sempre cercare di interpretare, a prescindere dai possibili errori umani.
    Deve essere poi una console degli errori a dirti " Guarda che è sbagliato avere due elementi con lo stesso id ".

    In fondo che gliene importa all'utente finale che due elementi non possono avere lo stesso id?
    Perchè deve essere penalizzato?

  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    Mi stai chiedendo: perché ad un autista non gliene deve importare di avere due volanti? Il volante in una macchina è uno. Se te ne mettono un altro ti dovresti preoccupare. il W3C non lo faccio io, mi attengo alle direttive e se il programmatore non rispetta nemmeno le regole basilari (id univoci), bhè non so che farci.
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  6. #6
    Ciò che dici tu è giustissimo, gli id doppi non andrebbero mai e poi mai usati ( io non l'ho mai fatto ).

    Io sto solo dicendo che questa cosa che fa IE non è una cosa voluta, è un bug.

    Se metti due elementi con id uguali nel codice html è sbagliatissimo, ma i browser in qualche modo riescono a interpretarlo e visualizzano il tutto.

    Anche IE c'è la fa, ma non con innerHTML.


    E se dovessi includere una pagina che sfortunatamente avesse gli stessi id?
    Devo a forza usare un iframe per colpa di IE?

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    17
    ho lo stesso problema... ie non mi visualizza una porzione di codice:

    $result = mysql_db_query($sheet_dbase, "SELECT id, id_camp, giornata, data, scuadra1, scuadra2, ris, goal_scuadra1, goal_scuadra2 FROM $sheet_t_cal WHERE id_camp = '$idCamp' AND giornata = '$giornata' " , $sheet);
    if ($result){
    print "<form name=\"scuadreAggCalendario\" method=\"POST\" action=\"calendari_management.php\">";
    print "<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" width=\"100%\">\n";
    print "<tr class=\"row1\">";
    print "<td valign=\"top\" align=\"center\"> </td> ";
    print "<td valign=\"top\" align=\"center\"> casa </td> ";
    print "<td valign=\"top\" align=\"center\"> - </td> ";
    print "<td valign=\"top\" align=\"center\"> trasferta </td> ";
    print "<td valign=\"top\" align=\"center\"> risultato </td> ";
    print "</tr>";
    $countRow = mysql_num_rows($result);
    if($countRow > 0){
    $i = 0;
    while ($row = mysql_fetch_row($result)) {
    print "<tr> <td colspan=\"6\"> </td> </tr>";
    print "<tr>";
    print "<td valign=\"top\" align=\"center\" width=\"10px\"> </td> ";
    print "<td valign=\"top\" align=\"center\">" . $scuadraA = printSquadreById($row[4], $idCamp) ."</td> ";
    print "<td valign=\"top\" align=\"center\"> - </td> ";
    print "<td valign=\"top\" align=\"center\">" . $scuadraB = printSquadreById($row[5], $idCamp) ."</td> ";
    print "<td valign=\"top\" align=\"center\">";
    print "<table>";
    print "<tr>";
    print "<td> <input name=\"risA[$i]\" type=\"text\" size=\"5\" value=\"$row[7]\"> </td>";
    print "<td> <input name=\"risB[$i]\" type=\"text\" size=\"5\" value=\"$row[8]\"> </td>";
    print "<input name=\"i\" type=\"hidden\" value=\"$i\"> ";
    print "<input name=\"id\" type=\"hidden\" value=\"$idCamp\"> ";
    print "<input name=\"idRecord[$i]\" type=\"hidden\" value=\"$row[0]\"> ";
    print "<input name=\"squadraA[$i]\" type=\"hidden\" value=\"$row[4]\"> ";
    print "<input name=\"squadraB[$i]\" type=\"hidden\" value=\"$row[5]\"> ";
    print "<input name=\"ris2A[$i]\" type=\"hidden\" value=\"$row[7]\"> ";
    print "<input name=\"ris2B[$i]\" type=\"hidden\" value=\"$row[8]\"> ";
    print "</tr>";
    print "</table>";
    print "</td> ";
    print "</tr>";
    $i = $i + 1;
    }
    }else{
    print "<tr> <td colspan=\"6\"> </td> </tr>";
    print "<td colspan=\"6\" align=\"center\">";
    print "La giornata non &egrave; ancora stata inserita";
    print "</td>";
    print "</tr>";
    }
    print "<tr> <td colspan=\"6\"> </td> </tr>";
    print "<tr align=\"center\">";
    print "<td colspan=\"6\" align=\"center\"> <input type=\"submit\" name=\"comando\" value=\"$sheet_b[7]\"> </td>";
    print "</tr>";
    print "</table>";
    print "</form>";
    }else {
    print("Errore nell'esecuzione dello get calendario by giornata\n ");
    }

    mentre se al posto del suddetto codice faccio stampare "ciao" tutt funziona come mai??

  8. #8
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    whoo hoo, hai riesumato una bella discussione morta e sepolta

    Dovresti per prima cosa controllare che codice HTML arriva alla pagina e verificare se contiene errori...
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.