Autor Zpráva
HGD
Profil
Už sem nějak tak dal dohromady všechno z ajaxem, takže vyberu adresář, vypíšou se mi soubory, kliknu na soubor a vypíšou se mi nějaký detaily, a ted bych to potřeboval společně ještě s nastavením z jednoho selectu (zarovnání vpravo-vlevo) odeslat zpět z funce.
Poradili byste pls nědo jestli ste ten popis pochopily. Díky
PS.: napadlo mě nějakej input srytej, am by se to připisovalo a pak to pole odeslalo...
Leo
Profil
Nepochopily. Leo
HGD
Profil
dělam takovej obrázkovej manager, 3 sloupce, v prvnim je strom adresářů, ve 2 když vyberu některej z adresářů se vypíšou obrázky co jsou uvnitř a ve 3 když kliknu na něterej obrázek, se vypíšou nějaký informace o danym obrázku. A mě ted jde o to, jak ty data, který jsem dostal od AJAXu ve 2 krocích všechny odešlu třeba do nějaký funkce.

function odeslatHTTP(slozka){
  var httpRequest;
  var url = 'strukture.php?folder='+slozka;

  if (window.XMLHttpRequest) { // Mozilla, Safari, Opera, Konqueror, ...
    httpRequest = new XMLHttpRequest();
    if(httpRequest.overrideMimeType){
       httpRequest.overrideMimeType('text/xml');
    }
  } else if (window.ActiveXObject) { // Internet Explorer
    httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
  }
  
  httpRequest.open('GET',url,true);
  httpRequest.onreadystatechange = function (){vyberFolder(httpRequest)};
  httpRequest.send(null);
};

function vyberFolder(httpRequest){
  
  if(httpRequest.readyState==4){
  // - odpověd přijata vpořádku
    if(httpRequest.status==200){
    // - vše v pořádku
      var files=httpRequest.responseXML.getElementsByTagName('soubor');
      var typ=httpRequest.responseXML.getElementsByTagName('typ');
      var folderSend=httpRequest.responseXML.getElementsByTagName('slozka');
      var ikona;
      var vypis=document.getElementById('vypis_souboru');
      vypis.innerHTML="";
      
      for(var i=0; i<=files.length; i++){
        var pripona = typ[i].firstChild.nodeValue;
        var img = document.createElement("img");  // výroba elementu <img>
        img.alt = pripona.toUpperCase();
        img.src = "style/" + {"JPG": "jpg", "jpg": "jpg", "jpeg": "jpg", "PNG": "png", "png": "png", "GIF": "gif", "gif": "gif"}[pripona] + ".gif";
        vypis.appendChild(img);  // začlenění <img> do elementu s id="vypis_souboru"
        var a = document.createElement("a");  // výroba elementu <a>
        a.appendChild(document.createTextNode(files[i].firstChild.nodeValue));  // doplnění textu do <a>
        (function(i) {
          a.onclick = function() {
            obrazekHTTP(files[i].firstChild.nodeValue, folderSend[i].firstChild.nodeValue);
          };
        })(i);  // tohle bude asi těžší na pochopení, viz povídání o closure
        vypis.appendChild(a);  // začlenění <a> do elementu s výpisem
        var br = document.createElement("br");
        vypis.appendChild(br);
      }

    }else{
    // - stránka nenalezena, popř. jiná chyba
        alert("Chyba pri nacitani stanky "+ httpRequest.status +":"+ httpRequest.statusText);
     }
  }else{
   // - nepřipravená odpoved
   }
};

function obrazekHTTP(img,id){
  var httpRequest;
  var url='info.php?obrazek='+img+'&id='+id;

  if (window.XMLHttpRequest) { // Mozilla, Safari, Opera, Konqueror, ...
    httpRequest = new XMLHttpRequest();
    if(httpRequest.overrideMimeType){
       httpRequest.overrideMimeType('text/xml');
    }
  } else if (window.ActiveXObject) { // Internet Explorer
    httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
  }
  
  httpRequest.open('GET',url,true);
  httpRequest.onreadystatechange = function (){vyberImg(httpRequest)};
  httpRequest.send(null);
};

function vyberImg(httpRequest){
  
  if(httpRequest.readyState==4){
  // - odpověd přijata vpořádku
    if(httpRequest.status==200){
    // - vše v pořádku
      var pole=document.getElementById('view');
      pole.innerHTML="";

  var adresa=httpRequest.responseXML.getElementsByTagName('url');
  var miniatura=httpRequest.responseXML.getElementsByTagName('mini');
  var ImgName=httpRequest.responseXML.getElementsByTagName('jmeno');
  var rozmery=httpRequest.responseXML.getElementsByTagName('dimension');
  var velikost=httpRequest.responseXML.getElementsByTagName('size');
  var datum=httpRequest.responseXML.getElementsByTagName('date');

       pole.innerHTML='<strong>'+ImgName[0].firstChild.nodeValue+'</strong><b r>';
       pole.innerHTML+='Rozměry: '+rozmery[0].firstChild.nodeValue+'<br>';
       pole.innerHTML+='Velikost: '+velikost[0].firstChild.nodeValue+'<br>';
       pole.innerHTML+='Upraveno: '+datum[0].firstChild.nodeValue+'<br>';
       pole.innerHTML+='<img src="'+miniatura[0].firstChild.nodeValue+'">';
       
       document.settings.UrlObrazku.value=adresa[0].firstChild.nodeValue;

    }else{
    // - stránka nenalezena, popř. jiná chyba
        alert("Chyba pri nacitani stanky "+ httpRequest.status +":"+ httpRequest.statusText);
     }
  }
};
Str4wberry
Profil
Pokud jsem to pochopil, tak je vlastně odešlete zavoláním skriptu s příslušnými parametry.
HGD
Profil
to jo, jenomže já vlastně z toho scriptu kterej sem sem vložil dostanu v nějakej proměnnej výsledek, ale já ho potřebuju odeslat kliknutím na tlačítko který je normálně v HTML, jenom má onClick, a tam newim jak to dostat
Str4wberry
Profil
Tím onClickem zavoláte požadovaný skript. Pořád nevím, kde je problém? V sestavení jeho adresy? Možná by to šlo lépe pochopit z živé ukázky.
HGD
Profil
živá ukázka je tam jen v jednej složce fotka, a při pohledu do odu neni widět jen malinkej ousek PHP terej se stará o výpis stromu adresářů až vlevo
Str4wberry
Profil
Takže to má odeslat jméno obrázku při kliknutí na tlačítko „Wložit“, je to tak?
HGD
Profil
no nakonec to bude spojený s oknem de bude TEXY! takže jmeno obrázku, alternativní text a zarovnání

*EDIT

prostě a jasně, jde mi o to, abych kliknutím na button "Vložit" odeslal data získaná scriptem AJAXU dalšímu scriptu jao parametr

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: