Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Javascript: sivun lataus kerran

Sivun loppuun

Marbo [17.12.2008 17:23:03]

#

Eli miten saisin javascriptillä ladattua sivun vain ja ainoastaan kerran?

Oon löytäny vaan ajaxille jotain joka latailee sit sitä sivua minkä oon määrittäny siihen.

Tässä se koodi mitä tällä hetkellä käytän:

<script language="javascript" type="text/javascript">
function ajaxFunction(){
	var ajaxRequest;

	try{
		ajaxRequest = new XMLHttpRequest();
	} catch (e){
		try{
			ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try{
				ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e){
				alert("Selaimesi ei tue ajaxia!?");
				return false;
			}
		}
	}
	ajaxRequest.onreadystatechange = function(){
		if(ajaxRequest.readyState == 4){
			document.getElementById('ajax').innerHTML = ajaxRequest.responseText;
		}
	}
	ajaxRequest.open("GET", "index.php", true);
	ajaxRequest.send(null);

}
</script>

Ja tähän div joka sitten näyttää tuon ajaxin lataaman sisällön.

<div id="ajax"><\/div>

Mutta haluisin, että se vaan latais kerran sen sisällön. Eli hakis vaan php sivun jä näyttäis sen.

Metabolix [17.12.2008 17:26:48]

#

No mutta tuohan lataa sen kerran. Mitä oikein tarkoitat?

Marbo [17.12.2008 17:29:14]

#

Aijaa vai? Eipäs näytä ollenkaan pelkkä tuo. Puuttu vielä koodi pätkä.

<script language=javascript>
var int=self.setInterval("ajaxFunction()",1000)
</script>

Eli lähinnä kaipaan sitä, että miten saan javascriptillä incluedettua php tiedoston?

Metabolix [17.12.2008 17:47:37]

#

Miksi setInterval eikä setTimeout? Voit ihan itseäsi syyttää, kun se lataa sitä sekunnin välein, kun kerran itse niin käsket.

Marbo [17.12.2008 18:00:27]

#

no setTimeout ei lataa koko hommelia :o

EDIT . no nyt latas :o mutta ei aina

EDIT2: kun vaihdoin tuoksi setTimeout niin se lataa sen aina välillä, ei aina. :S

Metabolix [17.12.2008 18:18:30]

#

No laitapa se window.onload-tapahtumaan ja pitkä skripti tietenkin head-osioon. Jos vaikka sivusi ei ehdi latautua kokonaan.

Marbo [17.12.2008 18:38:44]

#

Metabolix kirjoitti:

No laitapa se window.onload-tapahtumaan.

Haluisitko vähän selventää?


EDIT: Näin?

<script language=javascript>
var int=self.setTimeout('window.onload("popupbox()")',1000);
</script>

Mutta ei toimi vieläkään. :/

Metabolix [17.12.2008 19:49:04]

#

Ei. Valitse näistä:

window.onload = popupbox;
<body onload="popupbox()">

JavaScript-opas voisi olla hyödyllistä luettavaa (muutenkin kuin linkiteltyltä kohdalta).

Marbo [17.12.2008 20:14:06]

#

Eipä toimi kumpikaan. Ainut miten saan ton toimimaan niin on :

 <script language=javascript>
var int=self.setInterval("ajaxFunction()",1000)
</script>

mutta sillon se päivittää sitä koko ajan :/

Jaahas jaahas.


EDIT: Eli se toimiikin, mutta vain sillon kun on toi sivu pelkästään valittuna. Hmm.

EDIT2: Tässä sitten koko koodi...

<script language="javascript" type="text/javascript">
function popupbox(){
	var httpt;

	try{
		httpt = new XMLHttpRequest();
	} catch (e){
		try{
			httpt = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try{
				httpt = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e){
				alert("Selaimesi ei tue ajaxia!?");
				return false;
			}
		}
	}
	httpt.onreadystatechange = function(){
		if(httpt.readyState == 4){
			document.getElementById('boxi').innerHTML = httpt.responseText;
		}
	}
	httpt.open("GET", "index.php", true);
	httpt.send(null);

}
</script>

<script language="javascript" type="text/javascript">
function $(v) {
	return(document.getElementById(v));
			}

function $S(v) {
	return($(v).style);
	}

function agent(v) {
	return(Math.max(navigator.userAgent.toLowerCase().indexOf(v),0));
	}

function isset(v) {
	return((typeof(v)=='undefined' || v.length==0)?false:true);
	 }

function XYwin(v) {
	 var z=agent('msie')?Array(document.body.clientHeight,document.body.clientWidth):Array(window.innerHeight,window.innerWidth); return(isset(v)?z[v]:z);
	 }

function tog() {
	document.onclick=function(){ $S('bg').display='none'; $S('box').display='none'; document.onclick=function(){};
	};}

function box(v,b) {
setTimeout("tog()",100);
$S('bg').height=XYwin(0)+'px';
$S('bg').display='block';

$('box').innerHTML=v+'<div class="div"><div class="sisa" id="boxi"><?php if(!$ladattu) echo "<center><img src=\"load.gif\"><br>Ladataan...</center>"; ?><\/div><\/div>';

$S('box').left=Math.round((XYwin(1)-b)/2)+'px';
$S('box').width=b+'px';
$S('box').display='block';
}
</script>

<script language=javascript>
var int=self.setInterval("popupbox()",1000)
</script>
$('box').innerHTML=v+'<div class="div"><div class="sisa" id="boxi"><?php if(!$ladattu) echo "<center><img src=\"load.gif\"><br>Ladataan...</center>"; ?><\/div><\/div>';

Onko tohon jotain miten saisi incluedettua php tiedoston? ei ainakaan toiminu suoraan

<?php include("jeeee.php"); ?>

enkä netistä löytäny mitään miten sen saisin?

pistemies [18.12.2008 14:47:58]

#

En jaksa selata tuota koodiasi, mutta periaate on yksinkertainen:

<script type="text/javascript">
// joo.php
<?php include("testi.php");?>
</script>
<?php
// testi.php
echo 'document.write("Testi")';
?>

Eli php:lla teet ensin jotain, mihin javascript ei pysty. Sitten kirjoitat php:lla stringinä javascript-koodia sekä php-muuttujissa olevaa tietoa, jonka tulostat sivulle ja liität tulostukseen.
Jos hyvältä näyttää, voit php:lla tulostaa pelkkiä javascript muuttujien nimiä, joissa kerätty tieto on tai javascript-arrayn. Vaihtoehtoja on todella runsaasti.

Marbo [18.12.2008 16:45:38]

#

joo no antaapi olla, sain sen jotenki nyt.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta