Autor Zpráva
LOPAD
Profil
Cawa, mam script.
Ten mi zavola echo zo suboru adresare.php, a to mi ide.
potom, mi má vysplitovať prijatý text a nakoniec vypísať nulté pole z polí kde sa vysplitoval prijatý text

<script>
 
 document.write("LOL");
    var xhr; 
    try {  xhr = new ActiveXObject('Msxml2.XMLHTTP');   }
    catch (e) 
    {
        try {   xhr = new ActiveXObject('Microsoft.XMLHTTP');    }
        catch (e2) 
        {
          try {  xhr = new XMLHttpRequest();     }
          catch (e3) {  xhr = false;   }
        }
     }
  
    xhr.onreadystatechange  = function()
    { 
         if(xhr.readyState  == 4)
         {
              if(xhr.status  == 200) {
               
document.write(xhr.responseText);
var top;
var left;


var subory = xhr.responseText;
subory.split("\*");
alert(subory[0]);
alert(subory[1]);
var top = 60 + "px";
var left = 20 + "px";

for(var i in subory){
var meno = subory[i];

var index = meno.indexOf(".");
if(index != -1){

meno.split(".");


switch(meno[1]){
case 'txt' :
document.write("<img src='txt.png' onClick='move' style='top:" + top + "; left:" + left + "' title='" + meno[0] + "'>");

top = top.replace("px", "");
if(top + 60 <= 600){
top = top + 60 + "px";
}else{
top = 60 + "px";
left.replace("px","");
left = left + 60;

}



}


}


}
}
              else {
                 document.write("Error code " + xhr.status);
}    
     }

    }

   xhr.open('GET', "/after_login/adresare.php",  true); 
   xhr.send(null); 



 </script>




kód nefunguje tu.
Totiž on mi vypíše to nulté pole, ale čudné je, že jeho obsahom je namiesto textu oddeleného * text oddelený písmenko za písmenkom.
_es
Profil
LOPAD:
Viď: Psaní metodou document.write po načtení stránky maže stránku.
LOPAD
Profil
Ale to bohužiaľ nieje mojím problémom. Mne sa do alertu má vypísať splitovaný text. Ten sa aj vypíše, ale je vysplitovaný inak.
_es
Profil
LOPAD:
Ale to bohužiaľ nieje mojím problémom.
Je.
Nevylučuje to však ešte iné problémy.
Chamurappi
Profil
Reaguji na LOPADa:
Řádek 28: „subory.split("\*");
Tím říkáš všem prohlížečům „rozděl subory a výsledek zahoď“.

Řádek 29: „alert(subory[0]);
Tím říkáš některým prohlížečům „ukaž mi první znak z řetězce subory“ a některým „ukaž mi undefined“.
LOPAD
Profil
takže ako by to malo byť správne? lebo keď som dal
var files = new array();
files = subory.split("\*")

bolo undefined tak či tak a na inom fóre mi nikde chybu nenašili. PLS napiš mi sem ako by ten kód mal správne vyzerať.
_es
Profil
LOPAD:
napiš mi sem ako by ten kód mal správne vyzerať.
A ako si zatiaľ pokročil v oprave odhalených chýb?
LOPAD
Profil
neviem ako opraviť tú chybu s subory.split, lebo nefunguje mi priradenie k nejakej array a potrebujem s tým pomoc.
28 opraviť neviem. split mi bolo na nete ukázané takto.
LOPAD
Profil
aj keď dám:
var files = new array();
a potom:
files = subory.split("\*");
vypíše sa mi chyba na tom riadku kde je var files = new array(); že array is undefined, môžte si to pozrieť na webe čo som dal k tomu.
_es
Profil
LOPAD:
No to ale to je ťažko radiť, keď rady ignoruješ, respektíve si lenivý sa ich snažiť pochopiť.
LOPAD
Profil
je tu napísané
Řádek 28: „subory.split("\*");“
Tím říkáš všem prohlížečům „rozděl subory a výsledek zahoď“.
Ale neviem ako mám to chybu ošetriť. skýšalô som to priraďiť ale to mi nepomohlo.
A preto prosím aby mi niekto poradil ako má ten kód vyzerať. Nie som lenivý na chápanie, len neviem čo mám robiť.
Chamurappi
Profil
Reaguji na LOPADa:
skýšalô som to priraďiť ale to mi nepomohlo
Snažíš se programovat, tak zapoj analytické myšlení a zamysli se, proč ti to nepomohlo. Co asi ten řádek dělá teď? Teď nedělá vůbec nic. Proč nedělá nic? Protože ti na předchozím řádku vznikne chyba. Proč vznikne chyba? Protože je array nedefinováno, jak říká ta chybová hláška. Co tedy vlastně je array, když to není nic? Co by to mělo být? Proč to není, co by to mělo být? Jsi na internetu, máš při ruce miliony příkladů a to, co chceš, aby to bylo, v nich najdeš velmi snadno. (Až to najdeš, vysvětlíme ti, že vytvářet new Array() je stejně zbytečné.)
_es
Profil
LOPAD:
Nie som lenivý na chápanie, len neviem čo mám robiť.
Čo sa tak najprv pokúsiť odstrániť všetky chyby, čo ti boli vytknuté?
Čo si tak nájsť funkcie JS v nejakom manuáli, napríklad v dokumentácii Mozilly, máš tam vždy aj nejaký ukážkový príklad použitia, napríklad pre metódu split.
Prečo používaš reťazec "\*"? Je to to isté ako reťazec "*".
LOPAD
Profil
poradili mi to inde. a chybu som si našiiel.
LOPAD
Profil
takže teraz mám tu problém:
<script>
 
 document.write("LOL");
    var xhr; 
    try {  xhr = new ActiveXObject('Msxml2.XMLHTTP');   }
    catch (e) 
    {
        try {   xhr = new ActiveXObject('Microsoft.XMLHTTP');    }
        catch (e2) 
        {
          try {  xhr = new XMLHttpRequest();     }
          catch (e3) {  xhr = false;   }
        }
     }
  
    xhr.onreadystatechange  = function()
    { 
         if(xhr.readyState  == 4)
         {
              if(xhr.status  == 200) {
               
document.write(xhr.responseText);
var top;
var left;


var subory = xhr.responseText;
var files = subory.split(",");
alert(files[0]);

var top = 60 + "px";
var left = 20 + "px";
var last = files.lenght;
files.splice(last);
alert(files[1]);

for(var i in files){
var meno = files[i];

var index = meno.indexOf(".");
if(index != -1){

var celemeno = meno.split(".");


switch(celemeno[1]){
case 'txt' :
document.body.innerHTML("<img src='txt.png' onClick='move' style='top:" + top + "; left:" + left + "' title='" + meno[0] + "'>");

top = top.replace("px", "");


if(top + 60 <= 600){
top = top + 60 + "px";
}else{
top = 60 + "px";
left.replace("px","");
left = left + 60;

}



}

}else{
document.write("done");


}


}
}
              else {
                 document.write("Error code " + xhr.status);
}    
     }

    }

   xhr.open('GET', "/after_login/adresare.php",  true); 
   xhr.send(null); 



 </script>




split sa prevedie, vše ide ako po masle. vymaže sa reklama v poslednom array a začne sa cyklus foreach.
v ňom sa overuje či (nultá, prvá, druhá, tretia...) array obsahuje ".". ak bodku obsahuje, array sa vysplituje do ďalšej arraye. Potom sa pomocou switch overuje posledná array v bodkou vysplitovanej array. ak sa ale bodka v danej array nenachádza, vypíše sa "done", a pokračuje sa v cykle foreach ktorý toto opakuje pokým sa array neskončí.
Neviete kde je chyba?
Chamurappi
Profil
Reaguji na _es:
Prečo používaš reťazec "\*"?
Protože to mu poradili jinde.


Reaguji na LOPADa:
Neviete kde je chyba?
Víme. Ale protože je to podobná chyba, jako bylo to malé A v new array, měl by sis ji najít sám.
Nepopsal jsi ani projevy problému (tedy, že cyklus neproběhne ani jednou – předpokládám), fláknul jsi sem kus nepřehledného kódu a popsal zadání. Zamysli se nad problémem, proveď pár testů a najdeš příčinu.
LOPAD
Profil
nie. to mi poradili tu.
peta
Profil
LOPAD: Timhle zpusobem, to mi poradili tu, takze to musi fungovat, nic nenaprogramujes. Zkus premyslet trosku sam.
http://peter-mlich.wz.cz/web/links.htm#js_literatura
Javascript-reference.info to ma podle me krasne rozepsane.

Pro ladeni je dobre pouzivat alert a alert(promenna.toSource()).
alert(subory); // zobrazi, co je v promenne subory
var files = new array();
alert(files); // zobrazi prazdnou array
files = subory.split("\*"); // rozdeli string podle hviezdicky nebo lomitka a hvezdicky (musel bych testnout)
alert(files); // zobrazi co?

document.write("Error code " + xhr.status);
Ajaxove funkce jsou casove. Tj. pracuji mimo dokument. Pokud v ni zavolas document.write, tak se stane to, ze ti smaze html, css, js kod cele stranky.
Podobne tam prepisujes body.innerHTML. To je sice fajn, ale tag script, pokud neuvedes jinak, ti prilepi do body elementu. body.innerHTML si tedy smazes celou stranku.

V konzoli mi to ted pise chybna syntaxe, bohuzel letim na bus. Ale nemam tvuj php kod.
<div id=aaa></div>
<script>
function zobraz(str) {
	document.getElementById('aaa').innerHTML+="<BR>"+str;
}
	zobraz("LOL");
	var xhr;
try {
	xhr = new ActiveXObject('Msxml2.XMLHTTP');
}
catch (e) {
try {
	xhr = new ActiveXObject('Microsoft.XMLHTTP');
}
catch (e2) {
try {
	xhr = new XMLHttpRequest();
}
catch (e3) {
	xhr = false;
}
}
}
xhr.onreadystatechange  = function() {
if(xhr.readyState  == 4) {
if(xhr.status  == 200) {
	zobraz(xhr.responseText);
	var top;
	var left;
	var subory = xhr.responseText;
	var files = subory.split(",");
	alert(files[0]);
	var top = 60 + "px";
	var left = 20 + "px";
	var last = files.lenght;
	files.splice(last);
	alert(files[1]);
for(var i in files) {
	var meno = files[i];
	var index = meno.indexOf(".");
if(index != -1) {
	var celemeno = meno.split(".");
switch(celemeno[1]) {
	case 'txt': zobraz("<img src='txt.png' onClick='move' style='top: " + top + ";	left: " + left + "' title='" + meno[0] + "'>");
	top = top.replace("px", "");
if(top + 60 <= 600) {
	top = top + 60 + "px";
}
else {
	top = 60 + "px";
	left.replace("px","");
	left = left + 60;
}
}
}
else {
	zobraz("done");
}
}
}
else {
	zobraz("Error code " + xhr.status);
}
}
}
	zobraz(222);
	xhr.open('GET', "after_login/adresare.php",  true);
	zobraz(333);
	xhr.send(null);
	zobraz(444);
 </script>
Chamurappi
Profil
Reaguji na peta:
Pro ladeni je dobre pouzivat alert a alert(promenna.toSource()).
Metoda toSource existuje jen v jednom prohlížeči, pokud vím.

var files = new array();
alert(files); // zobrazi prazdnou array
Ne, array nic není.

bohuzel letim na bus. Ale nemam tvuj php kod.
Co si počneš v buši bez PHP kódu?
LOPAD
Profil
peta:
na čo slúži vypísanie tých čísel? tam na konci...
LOPAD
Profil
PHP kód:
<?php
function read_dir($adresar) {
	if ($handle = opendir($adresar)) { 
	$id=0;
		while (false != ($file = readdir($handle))) { 
			if ($file != "." && $file != "..") { 
				$id++;
				echo $file.",";
			} 
		} 
		if($id == 0) echo "V tomto adresári sa nenachádzajú žiadne iné adresáre ani súbory.";
		closedir($handle); 
	} 
 
}
read_dir("priecinky")
?>

peta
Profil
LOPAD:
Testovani, co vsechno se vykonava.
1) Dalsi 2 alerty jsem tam zmenil na zobraz.
2) var last = files.lenght;
ja myslel, ze se to jmenuje length jako delka, viz slovnik.seznam.cz
Musim si ale prenastavit konzolu, protoze mi to neukazala jako chybu. Asi protoze, request je casova funkce. Nebo je FF rozbity suprovnim upgrade :)
3) Vubec neresis to, jestli tam carka nejaka je a jestli to neni ten text chybove hlasky :)
Neresis ani moznost souboru "ahoj,pepo.txt.doc"

Chamurappi
> var files = new array();
> alert(files); // zobrazi prazdnou array
Ne, array nic není.
Pravda, new Array() nebo [].
LOPAD
Profil
nie. mne array zobrazuje.....
a či sa týke riešenia viacerých prípon, v php vytváraní súborov mám ošetrené všetko tak, aby mohol názov dokumentu obsahovať len jednu bodku. Škoda, že som nemal poruke hightlighter. A žiadne iné chyby? ani v php?

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:

0