Kezdőoldal » Számítástechnika » Weblapkészítés » Hogy lehetne ezt megvalósítani?

Hogy lehetne ezt megvalósítani?

Figyelt kérdés
Hogy lehet azt megoldani, hogy ha van pl. egy blogunk akkor úgy lehessen hozzáadni bejegyzést, hogy ha valaki éppen nézi a főoldalon vagy akárhol az eddigieket, automatikusan megjelenjen amint hozzáadom, de nem frissítse az oldalt olyan formában, hogy a felhasználó éppen olvas valamit és hirtelen eltűnjön?
2011. aug. 9. 15:38
 1/4 anonim ***** válasza:

van egy általános mondat 'ebben a világban':


"Tartalom frissítése, oldal újratöltés nélkül" = AJAX

2011. aug. 9. 16:56
Hasznos számodra ez a válasz?
 2/4 anonim ***** válasza:

Asynchron http request, amire szükséged van:


Tessék egy működő példa:


http_request.js:


function HttpClient() { }

HttpClient.prototype = {

requestType:'GET',

isAsync:false,

xmlhttp:false,

callback:false,

onSend:function() {

document.getElementById('HttpClientStatus').style.display =

'block';

},

onload:function() {

document.getElementById('HttpClientStatus').style.display =

'none';

},

onError:function(error) {

alert(error);

},

init:function() {

try {

this.xmlhttp = new XMLHttpRequest();

} catch (e) {

var XMLHTTP_IDS = new Array(

'MSXML2.XMLHTTP.5.0',

'MSXML2.XMLHTTP.4.0',

'MSXML2.XMLHTTP.3.0',

'MSXML2.XMLHTTP',

'Microsoft.XMLHTTP');

var success = false;

for (var i=0;i < XMLHTTP_IDS.length &&

!success; i++) {

try {

this.xmlhttp = new ActiveXObject

(XMLHTTP_IDS[i]);

success = true;

} catch (e) {}

}

if (!success) {

this.onError('Unable to create XMLHttpRequest.');

}

}

},

makeRequest: function(url,payload) {

if (!this.xmlhttp) {

this.init();

}

this.xmlhttp.open(this.requestType,url,this.isAsync);

var self = this;

this.xmlhttp.onreadystatechange = function() {

self._readyStateChangeCallback(); }

this.xmlhttp.send(payload);

if (!this.isAsync) {

return this.xmlhttp.responseText;

}

},

_readyStateChangeCallback:function() {

switch(this.xmlhttp.readyState) {

case 2:

this.onSend();

break;

case 4:

this.onload();

if (this.xmlhttp.status == 200) {

this.callback(this.xmlhttp.responseText);

} else {

this.onError('HTTP Error Making Request: '+

'['+this.xmlhttp.

status+']'+

' '+this.xmlhttp.

statusText);

}

break;

}

}

}


http_client.js:


var client=new HttpClient();

client.isAsync=true;

client.callback=function(result){

document.getElementById('tartalom').innerHTML=result;

}

function replaceContent(page){

client.makeRequest(page,null);

}


HTML:

head-be ezt tedd be:

<script type="text/javascript" src="js/http_request/http_request.js"></script>

<script type="text/javascript" src="js/http_request/http_client.js"></script>


Link:

<a href="javascript:replaceContent('valami.php')">link szövege</a>


Betöltés kijelzése: (stílusát CSS-ben úgy alakítod, ahogy akarod)

<div class="loading" id="HttpClientStatus">

<div style="display:none">Loading...</div>

</div>


Behúzandó tartalom az alábbi divbe kerül bele:

<div id="tartalom">


</div>


Ajánlom, hogy nézz utána az az AJAX és SEO-nak, mivel a keresőoptimalizálásához is érteni kell, mivel valójában JavaScriptről van szó, ha AJAX-ról beszélünk.


Már csak egy olyan scriptre van szükséged, ami az AJAX hívást valamilyen esemény alapján végzi el, vagy időzítve teszi azt, és nem úgy mint ebben a példában, hogy linkre kattintva történik a frissítés.


még egy fontos dolog, az így frissített tartalmakat nem fogod tudni könyvjelzőbe tenni.


Ha ezek alapján nem megy a dolog, akkor jó, ha ráfekszel a kliens és szerver oldali programozásra, mert anélkül nem fogod tudni megoldani a problémát.

2011. aug. 9. 17:45
Hasznos számodra ez a válasz?
 3/4 anonim ***** válasza:

Arra gondoltam, ha már most is AJAX-os tartalomfrissítéssel foglalkozom az egyik oldalamon, akkor kiegészítem az előző hozzászólásomat azzal, hogyan is tedd a honlapodat keresőbaráttá.

Ezzel a módszerrel a keresőrobotnak html tartalmat tudsz biztosítani. Ime a mostani honlapomból egy kis mintakód:


<a class="menulink" href="partners.php" onclick="javascript:replaceContent('content/partners.php'); return false">


Egy kis magyarázat a kódhoz.

A keresőrobot a partners.php-t fogja pásztázni, amiben a kereső számára létrehozott oldal van. Lényeges hogy teljes értékű html oldal legyen, ne csak annyit tartalmazzon, mint az AJAX-szal frissített tartalom.

A content/partners.php-ben pedig csak a behúzandó tartalom szerepel.

Kikapcsolt JavaScript esetén meg is tudod tekinteni a böngészőben, azt az oldalt, amit a kereső látni fog.

2011. aug. 9. 20:05
Hasznos számodra ez a válasz?
 4/4 anonim ***** válasza:

Ha nincsenek JavaScript ismereteid, akkor is simán használhatod, ha csak a HTML-t ismered, mivel ez copy/paste kód. Még azt is odaírtam milyen fájlnévvel és kiterjesztéssel kell elmenteni a JavaScripteket, és hogyan kell hivatkozni rá a html head-jében.

a tartalom id-vel rendelkező divbe kerül mindig a lecserélt tartalom.

Ebből pedig az következik, hogy egy külön file-ban kell tárolnod azt a ködrészletet, amit AJAX hívással fogsz behúzni, vagyis eléggé hasonlít a módszer az iframe-es megoldáshoz. Csak annyi a különbség, hogy Iframe-mel teljes HTML oldalt kell betölteni, míg itt egy adott divbe húzol be egy külön fájlban tárolt kódot, jelen példában a tartalom id-jű divbe húzzuk be a külső állományban tárolt kódot. Az AJAX-os tartalomcsere egyébként onclick eseményre következik be.

2011. szept. 11. 16:30
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:





Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!