Ergebnis 1 bis 6 von 6
  1. #1
    Avatar von dor557
    dor557 ist offline Grünschnabel
    registriert
    01-09-2006
    Ort
    Ludwigshafen am Rhein
    Beiträge
    9

    Bei Ajax-Abrage bekomme ich bei element.innerHTML immer einen top-abstand von ca 15px

    Hallo zusammen. Evtl weiss einer von euch hier Rat. Goggle konnte mir da keine entsprechende hilfestellung geben.

    Ich habe das Ajax Framework bei mir eingebunden. Funktioniert auch.
    hier mal der Komplette Code des AjaxFrameworks :

    Code:
    function ajaxLoad(method, URL, data, displayId) {   
        var ajax = null;   
        var loaderDIV = document.createElement("DIV");    
    	var loaderIMG = document.createElement("IMG");
        var loaderBR = document.createElement("br"); 
    	var loaderIMGSrc = loaderIMG.setAttribute("src", "/img/gif/ajaxloader_overlay.gif");
        var loaderText = document.createTextNode("Lade, kleinen moment...");
        
    	loaderDIV.setAttribute("id", "ajax_load_img");
        loaderDIV.appendChild(loaderIMG);
        loaderDIV.appendChild(loaderBR); 	    
    	loaderDIV.appendChild(loaderText);
        var Ausgabebereich = document.getElementById(displayId);
        Ausgabebereich.appendChild(loaderDIV); 
    
        if(window.ActiveXObject) {         
            ajax = new ActiveXObject("Microsoft.XMLHTTP");     
        }   
        else if(window.XMLHttpRequest) {           
            ajax = new XMLHttpRequest();       
        }   
        else {   
            alert("Your browser doesn't support Ajax");   
            return;   
        }   
       
        method = method.toLowerCase();   
        URL += "?dummy=" + (new Date()).getTime();   
        if(method=="get") {   
            URL += "&" + data;   
            data = null;   
        }   
       
        ajax.open(method, URL);   
       
        if(method=="post") {   
            ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded");   
        }   
           
        ajax.onreadystatechange = function() {   
            if(ajax.readyState==4 && ajax.status==200) {   
                var ctype = ajax.getResponseHeader("Content-Type").toLowerCase();   
                ajaxCallback(ctype, displayId, ajax.responseText);   
       
                delete ajax;   
                ajax = null;   
            }   
        }   
       
        ajax.send(data);
    	try{window.clearTimeout(ec);}
         catch(e) {} 
    }   
       
    function ajaxCallback(contentType, displayId, responseText) {   
        if(contentType.match("text/javascript")) {   
            eval(responseText);   
        }   
        else {   
            var el = document.getElementById(displayId);  
            el.innerHTML = responseText;   
        }   
    }   
       
    function getFormData(form_name_or_id) {   
           
        var frm = document.forms[form_name_or_id];   
        if(frm==null) {   
            alert("form not found!");   
            return;   
        }   
       
        var data = "";   
        var num_el = frm.elements.length;   
        for(i=0; i<num_el; i++) {   
            var el = frm.elements[i];   
            if(el.name=="" && el.id=="") {   
                continue;   
            }   
            var param_name = "";   
            if(el.name!="") {   
                param_name = el.name;   
            }   
            else if(el.id!="") {   
                param_name = el.id;   
            }   
       
            var t = frm.elements[i].type;   
            var value = "";   
            if(t=="text"||t=="password"||t=="hidden"||t=="textarea") {   
                value = encodeURI(el.value);   
            }   
            else if(t=="radio"||t=="checkbox") {   
                if(el.checked) {   
                    value = encodeURI(el.value);   
                }   
                else {   
                    continue;   
                }   
            }   
            else if(t=="select-one") {   
                value = encodeURI(el.options[el.selectedIndex].value);   
            }   
            else if(t=="select-multiple") {   
                for(j=0; j<el.length; j++) {   
                    if(el.options[j].selected) {   
                        if(data!="") {   
                            data += "&";   
                        }   
                        data += param_name + "=";   
                        data += encodeURI(select.options[j].value);   
                    }   
                }   
                   
                continue;   
            }   
            if(data!="") {   
                data += "&";   
            }   
            data += param_name + "=" + value;   
        }   
       
        return data;   
    }
    
    /* ---------------------------- */
    /* XMLHTTPRequest Enable */
    /* ---------------------------- */
    function createObject() {
      var request_type;
      var browser = navigator.appName;
      if(browser == "Microsoft Internet Explorer"){
        request_type = new ActiveXObject("Microsoft.XMLHTTP");
    }else{
      request_type = new XMLHttpRequest();
    }
    return request_type;
    }
    Wie sich das Gehört habe ich in der HTML Seite bei OnClick dann folgenden code :
    Code:
    javascript:ajaxLoad('get','/ajax/list_member.php', 'id=1&amp;view=full&amp;sid=1111111111','user_view_1'); return false;
    so weit so gut. Er ersetzt auch das DIV entsprechend. ABER und nun kommen wir zu dem problem.

    wenn er in das DIV den HTML-Code einsetzt habe ich am Oberen Rand des DIVs einen Abstand von ca. 15px.

    zum betrachten mal hier die URL :
    http://mercedes-freunde.dyndns-serve...embers.php?g=1

    wenn man dort dann auf Mehr anzeigen geht wird automatisch der ein Abstand oben eingefügt.
    auch wenn man dann wieder Schliessen klickt.

    Kann mir das jemand erklären ? Oder evtl. sagen ob das Normal ist.

    Bin für Jeden Rat oder hinweis dankbar. gruss Sascha

    PS: ich habe auch schon daran gedacht das evtl von meinem LadeDIV das <br /> evtl dafür verantwortlich ist. aber das herausnehmen des Codes :
    Code:
        var Ausgabebereich = document.getElementById(displayId);
        Ausgabebereich.appendChild(loaderDIV);
    ergab auch keinen unterschied.

  2. #2
    Avatar von kkapsner
    kkapsner ist offline Super Moderator
    registriert
    28-03-2008
    Beiträge
    17.757

    AW: Bei Ajax-Abrage bekomme ich bei element.innerHTML immer einen top-abstand von ca

    Das JS ist dafür nicht verantwortlich, sondern dein serverseitiges Skript. Dieses sendet die Daten in UTF-8 mit BOM... das mag der Browser nicht. Entferne die BOM und alles sollte funktionieren.

    PS: es heißt onclick und das javascript-Label darin ist unnötig (kann sogar sein, dass das mal Probleme verursachen wird.
    PPS: dein HTML ist invalide: http://validator.w3.org/check?verbos...rs.php%3Fg%3D1
    PPPS: Das Framework ist nicht so wirklich der Hit...

  3. #3
    Avatar von miniA4kuser
    miniA4kuser ist offline Lounge-Member
    registriert
    12-07-2006
    Beiträge
    3.034

    AW: Bei Ajax-Abrage bekomme ich bei element.innerHTML immer einen top-abstand von ca

    Du fügst in das DIV z.B.: id="user_view_1" ja ein neues HTML ein, welches vom Server zurückgeliefert wird:
    Code:
    <div style="position: relative; height: 500px; border: 1px solid #000000;">...
    Vor diesem DIV wird jedoch noch ein ZERO WIDTH NO-BREAK SPACE ( & #65279; ) eingefügt Vermute mal das wird vo Server geschickt. Hast du mal genau untersucht was vom Server als Abtwort geliefert wird?
    Geändert von miniA4kuser (08-04-2012 um 12:09 Uhr)
    Hoffe ich konnte helfen

  4. #4
    Avatar von kkapsner
    kkapsner ist offline Super Moderator
    registriert
    28-03-2008
    Beiträge
    17.757

    AW: Bei Ajax-Abrage bekomme ich bei element.innerHTML immer einen top-abstand von ca

    Sag' ich doch...
    Old name BYTE ORDER MARK
    === BOM

  5. #5
    Avatar von dor557
    dor557 ist offline Grünschnabel
    registriert
    01-09-2006
    Ort
    Ludwigshafen am Rhein
    Beiträge
    9

    AW: Bei Ajax-Abrage bekomme ich bei element.innerHTML immer einen top-abstand von ca

    Erstmal Danke euch. Ich habe schon vermutet gehabt das es ein BOM ist. Nur wo das war wusste ich nicht. Jetzt habe ich es gefunden und das Problem ist weg.

    Das JS ist dafür nicht verantwortlich, sondern dein serverseitiges Skript. Dieses sendet die Daten in UTF-8 mit BOM... das mag der Browser nicht. Entferne die BOM und alles sollte funktionieren.
    und ich werde auch zusehen das ich den HTML-code mit dem validator überprüfe. Wird sicherlich eine Hilfe sein...

    Danke ihr seid die Besten

  6. #6
    Avatar von kkapsner
    kkapsner ist offline Super Moderator
    registriert
    28-03-2008
    Beiträge
    17.757

    AW: Bei Ajax-Abrage bekomme ich bei element.innerHTML immer einen top-abstand von ca

    Bitte - gern geschehen.

Ähnliche Themen

  1. clientTop - Abstand Element zum Bildschirmrand in PX
    Von Script-Monster im Forum JavaScript
    Antworten: 4
    Letzter Beitrag: 15-03-2011, 09:20
  2. Antworten: 8
    Letzter Beitrag: 11-11-2010, 22:59
  3. Zwei Bilder mit innerHtml im Abstand setzen..?
    Von sirbender im Forum JavaScript
    Antworten: 4
    Letzter Beitrag: 01-12-2009, 14:10
  4. Antworten: 1
    Letzter Beitrag: 12-10-2007, 23:07
  5. wie bekomme ich js werte in einen query ?
    Von Dr.Bakterius im Forum JavaScript
    Antworten: 2
    Letzter Beitrag: 25-08-2005, 05:43

Stichworte

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •