Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    1,150

    [Google Maps] Combo Box funziona su FF ma non in IE

    Ciao a tutti,
    non so se questo sia la sezione giusta, perche' non so se dipende da javascript o da CSS.

    Premetto che il codice non l'ho scritto io e quindi sto cercando di capire come funziona.
    Sono due combo box relazionati con Google Map. Al cambio del primo (la provincia) si aggiorna il secondo, con la lista delle citta' di quella provincia.

    Il problema e' che in FF funziona, mentre in IE (versione 7) non funziona.

    Potrebbe dipendere quindi da Javascript oppure da CSS (magari qualche nome di div errato). Per il momento posto qui ed eventualmente se cosi' non fosse spostatemi.

    Invio il codice sia della parte della pagina php che della funzione richiamata (tramite Ajax) e vi
    ringrazio in anticipo per qualsiasi consiglio.

    Ciao

    Codice principale
    Codice PHP:

    <td><select class="texto_combos" id="state" onchange="javascript:fnCallByAjax('GoogleMapsReloadCity.php','new_state='+this.value,'city')">
    <?php
            
    foreach ($aStateList as $key=>$value){
                        if(
    $key==$state_default){
                            
    $selected="selected";
                        }else{
                            
    $selected=false;
                            }
                        echo 
    "<option $selected value='$key'>$value</option>";
                    }
    ?>
            </select></td>
            <td><?php echo $lab_city;?>:</td>
            <td><select class="texto_combos" style="width:100px" id="city">
            <?php
                
    foreach ($aCityList as $key=>$value){
                        if(
    $key==$city_default){
                            
    $selected="selected";
                        }else{
                            
    $selected=false;
                        }
                        echo 
    "<option $selected value='$key'>$value</option>";
                    }
            
    ?>
            </select></td>
    ...

    GoogleMapsReloadCity.php

    Codice PHP:
    require_once('config.clearwire.es.php');
    require_once(
    _PATH_COMMON_CLASES."classGoogleMaps.php");

    $sLanguageNav=substr($_SERVER['HTTP_ACCEPT_LANGUAGE'],0,2);

    $oGoogleMap=new GoogleMap();
    $oGoogleMap->setLanguage($sLanguageNav);

    $aCityList=$oGoogleMap->getGoogleCityList($_POST[new_state]);

    $_SESSION[GOOGLE_MAPS][CITY_LIST]=$aCityList;
    $_SESSION[GOOGLE_MAPS][STATE_SELECTED]=$_POST[new_state];
    $_SESSION[GOOGLE_MAPS][CITY_STATE_LOADED]=$_POST[new_state];

    foreach (
    $aCityList as $key=>$value){
        if(
    $key==$city_default){
            
    $selected="selected";
        }else{
            
    $selected=false;
        }
        echo 
    "<option $selected value='$key'>$value</option>";


  2. #2
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    - Affermi che potrebbe essere un problema js o css, ma allora perché posti codice php?
    - In oltre con firefox funziona! Sicuro? Hai controllato la console errori (spesso sembra funzionare ma restituisce un errore)
    - Mentre in Ie 7 non va? Errori o segnalazioni ne restituisce?
    - Hai provato il codice Php separatamente da ajax funziona correttamente? Sei sicuro?
    - Hai provato a inserire degli alert per verificare il corretto funzionamento js?
    - Come fai la chiamata ajax in get o in post?
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    1,150
    Intanto, grazie per la risposta

    Ti rispondo ad alcuni dubbi che mi hai sollevato.

    Originariamente inviato da cavicchiandrea
    ...
    - In oltre con firefox funziona! Sicuro? Hai controllato la console errori (spesso sembra funzionare ma restituisce un errore)
    Sembra funzionare, ma..ehm..in effetti esce questo errore

    uncaught exception: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsIXMLHttpRequest.send]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: http://www.xxxx.es/cwXmlHttp.php :: fnCallByAjax :: line 47" data: no]
    Grazie ancora


    EDit
    Questo il codice cwXmlHttp.php che va in errore.
    Dove evidenzio la riga 47 "incriminata"

    Codice PHP:
    function XmlHttp(){
    var 
    oRequest;

        if (
    window.XMLHttpRequest) {
            
    oRequest = new XMLHttpRequest();
            return 
    oRequest;
        
    // branch for IE/Windows ActiveX version
        
    } else if (window.ActiveXObject) {
            
    //"MSXML2.XMLHTTP","MSXML2.XMLHTTP.3.0",
            
    var arrSignatures = ["MSXML2.XMLHTTP.4.0","MSXML2.XMLHTTP.5.0","Microsoft.XMLHTTP"];
            for (var 
    i=0arrSignatures.lengthi++) {
                try {
                    
    //alert(arrSignatures[i]);
                    
    var oRequest = new ActiveXObject(arrSignatures[i]);
                    return 
    oRequest;

                } catch (
    oError) {
                    
    //alert(oError);
                
    }
            }

        }


        throw new 
    Error("MSXML is not installed on your system.");



    }


    function 
    addPostParam(sParamssParamNamesParamValue) {
        if (
    sParams.length 0) {
            
    sParams += "&";
        }
        return 
    sParams encodeURIComponent(sParamName) + "=" encodeURIComponent(sParamValue);
        
    /*var val=escape(sParamValue);
        return sParams + (sParamName) + "="
                       + (escape(val));*/
        
    }
    function 
    fnCallByAjax(sPath,sParam,div){
        
        var 
    oRequest=XmlHttp();
        
    oRequest.open("post",sPath,false);
        
    oRequest.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
    <--> 
    RIGA 47 <-->    oRequest.send(sParam);

        var 
    box document.getElementById(div);
        
    box.innerHTML="";
        
    box.innerHTML oRequest.responseText;
        


  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    1,150
    Forse ho trovato l'errore.

    L'ultimo parametro "div" della fnCallByAjax(sPath,sParam,div)

    Non e' un div ma un select

    onchange="java-script:fnCallByAjax('GoogleMapsReloadCity.php','ne w_state='+this.value,'city')"
    ...
    <select class="texto_combos" style="width:100px" id="city">
    ...
    Ma come fare?

    Edit - Risolvo cosi'
    Nota: ancora da provare per problemi interni sul server), pero' dovrebbe funzionare

    Aggiungo un div con un altro nome "cityDiv", perche' l'id del select mi serve nel form, e modifico definitivamente in questo modo la pagina principale

    Codice PHP:

    <td>
        <select class="texto_combos" id="state" onchange="java-script:fnCallByAjax('GoogleMapsReloadCity.php','new_state='+this.value,'cityDiv')">
        <?php
           
    foreach ($aStateList as $key=>$value){
                       if(
    $key==$state_default){
                            
    $selected="selected";
                        }else{
                            
    $selected=false;
                            }
                        echo 
    "<option $selected value='$key'>$value</option>";
                    }
    ?>    </select>
    </td>
    <td><?php echo $lab_city;?>:</td>
    <td>
        <div id="cityDiv" name="cityDiv">
        
        <select class="texto_combos" style="width:100px" id="city">
        <?php
                
    foreach ($aCityList as $key=>$value){
                        if(
    $key==$city_default){
                            
    $selected="selected";
                        }else{
                            
    $selected=false;
                        }
                        echo 
    "<option $selected value='$key'>$value</option>";
                    }
            
    ?>
        </select>
        
        </div>
    </td>
    ...

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    1,150
    Come non detto

    Ora mi da errore

    box is null
    [Break on this error] box.innerHTML="";
    Pero' mi sembra che sia tutto corretto :master:
    Dove sbaglio?

    Ari-Edit
    Il problema e' non "riscrivevo" la select

    Quindi, ora risolvo cosi' (e funziona anche su IE )

    Nella codice chiamato da Ajax
    Codice PHP:
    <?php
    require_once('config.clearwire.es.php');
    require_once(
    _PATH_COMMON_CLASES."classGoogleMaps.php");

    $sLanguageNav=substr($_SERVER['HTTP_ACCEPT_LANGUAGE'],0,2);

    $oGoogleMap=new GoogleMap();
    $oGoogleMap->setLanguage($sLanguageNav);

    $aCityList=$oGoogleMap->getGoogleCityList($_POST[new_state]);

    $_SESSION[GOOGLE_MAPS][CITY_LIST]=$aCityList;
    $_SESSION[GOOGLE_MAPS][STATE_SELECTED]=$_POST[new_state];
    $_SESSION[GOOGLE_MAPS][CITY_STATE_LOADED]=$_POST[new_state];

    echo 
    "<select class=\"texto_combos\" style=\"width:100px\" id=\"city\">";
    foreach (
    $aCityList as $key=>$value){
        if(
    $key==$city_default){
            
    $selected="selected";
        }else{
            
    $selected=false;
        }
        echo 
    "<option $selected value='$key'>$value</option>";
    }
    echo 
    "</select>";


    ?>
    Nella pagina principale

    Codice PHP:
                                                <div id="cityDiv" name="cityDiv">
                                                <select class="texto_combos" style="width:100px" id="city">

                                                    <?php
                                                    
    foreach ($aCityList as $key=>$value){
                                                        if(
    $key==$city_default){
                                                            
    $selected="selected";
                                                        }else{
                                                            
    $selected=false;
                                                        }
                                                        echo 
    "<option $selected value='$key'>$value</option>";
                                                    }

                                                    
                                                    
    ?>

                                                </select>
                                                    </div>
    Grazie ancora per la pazienza e spero che questo 3D serva a qualcuno
    Ciao

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.