| 

.NET C# Java Javascript Exception

3
Hallo ,
ich beschäftiege mich seit einigerzeit da mit ein browsergame selber zu machen und habe auch was gefunden wo mit ich arbeiten kann . Doch seit ein paar tage versuche ich die Rohstoffanzeige in Realtime ausgeben zu lassen oder das es sich jede sec Aktualisiert .

die index seite und die anderen kann ich nur durch .tpl oder .js bearbeiten .

in dem index.tpl binde ich die Rohstoffenanzeige so ein
index.tpl
<div id="restop" class="center" style="margin-top: -20px; margin-left: -49px">{include file="menu_resources.tpl"}</div>


menu_resources.tpl
Code:
{assign var="languageData" value=$smarty.config}

{foreach from=$languageData.resourceIds key=resourceIndex item=resourceId}

{if $resourceCount[$resourceIndex]}
{if $languageData.resource_image[$resourceIndex]}

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

{/if}

{$resourceCount[$resourceIndex]|number_format:"0":",":"."}

{if !$smarty.config.gui_misc_hide_storage_display}
{/if}
{/if}

{/foreach}


ich habe schon einigemöglichkeiten getestet doch endwerder greift der script garnicht oder ich bekomme nur die komplete seite automatisch neugeladen .

wie zb mit
<script>
$(document).ready(function() {
window.setTimeout(function() {window.location.reload();}, 1100);
});</script>
News:
09.05.2012
seevan 11 1 2
5 Antworten
2
Irgend wie verstehe ich nicht ganz, was Du da schreibst! Deine .tpl Dateien scheinen Dateien der Smarty Template Engine zu sein. Somit bringt ein "Laden" solcher Dateien per JavaScript gar nichts. Die Smarty Files erfordern eine .php Datei, die die Daten erzeugt und dann mit Hilfe der .tpl Dateien das HTML erzeugt.

Wenn Du Inhalte eines DIVs aktualisieren möchtest, dann ist jQuery schon mal sehr hilfreich. Du benötigst dort die AJAX Funktionen: http://api.jquery.com/jQuery.ajax/
Per JavaScript rufst Du eine php Datei auf, die Deiner Webseite die neuen Inhalte für den DIV Inhalt zurückliefert. Entweder gleich das formatierte HTML, oder z. B. ein JSON Objekt, dass Du dann per JavaScript auf der Client Seite formatierst und ausgibst ...
09.05.2012
Xantiva 2,3k 2 9
Verstehe den 2. Absatz als Ergänzung auch zu meiner Antwort. +1
Nicolai Schönberg 09.05.2012
1
Moin, ja also window.location.reload lädt natürlich die ganze Seite neu, das ist normal.

Da du eh schon jQuery verwendest so wie es aussieht, könntest du lieber den Inhalt von dem DIV neu laden.

$('#restop').load('menu_resources.tpl');


Diese funktion lädt den Inhalt von menu_resources.tpl in das DIV mit der ID "restop". Ist nur ein Beispiel, es wird wahrscheinlich nicht sofort funktionieren.

Mehr zu jQuery load kannst du hier nachlesen.

Viel Erfolg
09.05.2012
Nicolai Schönberg 2,4k 2 9
0
der Browser-Game-Engine arbeitet wie schon bemerkt wurde mit Smarty aber auch Ajax und ich habe dan noch gestern
mit jQuery rum getestet .Wo mit ich dan auch mal was bewriken konnte blos halt nicht das was ich wolte und jQuery blockiert andere scripts.

ich habe ja schon die letzten tage mich hier und da wund gelesen aber ich finde immer nur beispiele wie man das über eine php oder html macht.
doch da ich nicht sehen kan wie die augegeben TPL dan nun als php oder html heisen .
mus ich da eine möglichkeit finden die ich halt alle paar sec einen div neuladen las .

Ich habe es auch schon mit eim callback probiert der alle 3 sec den den tpl neu in den div lädt aber irgent wie greift der nicht .

was ich schon hin bekommen habe um mal was zu testen wo der div in irgend einer weise verändert wird ist ein fadein/out .

Das habe ich mit Axja gemacht kann mir den wer evtl sage wo nach ich über Ajxa suchen mus um mein problem zu lösen.
10.05.2012
seevan 11 1 2
Noch mal: Du kannst die "nackte" .tpl nicht so ausgeben! Die Datei ist ein Template für Smarty. D.h. Du brauchst zwingend ein .php Skript, das ein Smarty Objekt instanziert und kannst dann Variablen zuweisen und dann das Template rendern lassen. Lies Dir erst mal die Smarty Grundlagen durch: http://www.smarty.net/

Xantiva 11.05.2012
Mach es doch erstmal ganz einfach und taste dich ran. Ich glaub du hast das Prinzip noch nicht kapiert. mach dir eine eine php seite mit folgendem inhalt:

<?php echo date('l jS \of F Y h:i:s A'); ?>

2) speicher sie in deinem root ordner unter test.php oder irgendwas

3) Lade test.php mit jquery.load in dein div. Wenn alles gut ging hast du die Uhrzeit schonmal drin

4) Bau die jQuery.load methode in ein timer ein, sodass die seite alle Sekunde neu geladen wird. Wenn alles gut ging hast du dann jede Sekunde die aktuelle Uhrzeit in dem Div.
Nicolai Schönberg 11.05.2012
5) Wenn du es soweit hast ändere deine test.php so um das deine ressourcen darin ausgegeben werden
Nicolai Schönberg 11.05.2012
0
bitte löschen
11.05.2012
Nicolai Schönberg 2,4k 2 9
ja und da liegt das problem jQuery nicht benutzten da der js die andren blockiert.

habe das ja schon mit axja request und timeout probiert wen ich dan eine php anzeigen lass will die seite das ich accoun name und passwort eigebe .
ist doch ach totaler mist woher loss ich die gansen tags kenne auf smarty.net lese ich mich schon tage lang duch macht aber kein sind da es nur um phps geht. die seite ist für einsteiger nicht geeigent do wie die meisten seiten über javascript php ect.
seevan 11.05.2012
ich mus da ja alles in eine index.tpl machen die schon vorhanden ist und da wird auch schon prototype und scriptaculous javascript geladen .
wenn ich nun jQuery auch noch da zu lade laufen zb Time Counter nicht mehr .
ich schau mir wohl nal lieber erst mal die anderen JS an evtl kann ich ja da mit arbeiten oder evtl mus ich das auch .

seevan 11.05.2012
Anstatt so viel rum zu jammern das ein Browsergame / Smarty nichts für Anfänger ist, hättest du einfach mal ausprobieren können was ich dir vorgeschlagen habe
Nicolai Schönberg 11.05.2012
lol wer jammert den rum ich sag doch nur wie es ist poste mal gleich paar bei spiele mit den ich rum getestet habe und keine geht .
seevan 12.05.2012
Sorry, aber solche Texte versuche ich nicht mehr zu dechiffrieren. Des weiteren postest Du diverse HTML - Codes ohne den jeweiligen Dateinamen anzugegen und erwartest, dass sich hier jemand hinsetzt und das für Dich ausarbeitet?
Xantiva 14.05.2012
habe doch nichts da von gesagt das mir das wer schreiben soll . Ich wollte nur wiesen wie ich das machen kann .

Zu den code hier unten das sind test beispiele die ich in der index.tpl versucht habe zum laufen zu bekommen da ist der datei name unwichtig .

jquery ist nun mal mit dem Browser Game-Engine nicht kompatibel .

Hier brauch auch eigentlich keiner mehr antworten da mir schon alles gesagt worden ist was ich wiesen wollte .

Die lösung ist mit dem schon integrierten Frameworks zu arbeiten und den umgang mit Smarty lernen .
seevan 14.05.2012
0
<html>
<head>
<script src="http://code.jquery.com/jquery-latest.js">
<script type="text/javascript">
setInterval("my_function();",5000);
function my_function(){
$('#refresh').load(location.href + ' #time');
}
</script>
</head>
<body>
<div id="refresh"></div>
<div id="time">
<?php echo date('H:i:s');?>
</div>
</body>
</html>


<html>

<head>

<title></title>
<script type=”text/javascript” src=”http://ajax.googleapis.com/ajax/libs/jquery/1.3.0/jquery.min.js”></script>
</head>
<script>
$(document).ready(function() {
$("#load_here").load("test2.html");
});
</script>
<body>
<div id=”load_here”> </div>
</body>

</html>


<html>
<head>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script type="text/javascript">
setInterval("my_function();",1000);
function my_function(){
$('#refresh').fadeOut('fast').load('Load_post.php').fadeIn("slow");
}
</script>
</head>
<body>
<div id="refresh">Test Feld</div>

</body>
</html>


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Zeit </title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script>
<script type="text/javascript">
/* <![CDATA[ */
var datei2load = "test2.php"; // --- zu ladende PHP Datei
var sek2load = 2; // --- alle x Sekunden

$(document).ready(function() {
$.ajaxSetup ({
cache: false
});

$("#refresh").load(datei2load);

setInterval(function() {
$('#testdiv').load(datei2load);
}, (sek2load*1000));
});
/* ]]> */
</script>

</head>
<body>
<div id="refresh">START</div>
</body>
</html>


<script type="text/javascript" src="http://ajax.googleapis.com/ajax/
libs/jquery/1.3.0/jquery.min.js"></script>
<script type="text/javascript">
var auto_refresh = setInterval(
function ()
{
$('#load_tweets').load('record_count.php?q=<?php echo $search_word; ?>').fadeIn("slow");
}, 10000); // refresh every 10000 milliseconds

<body>
<div id="load_tweets"> </div>
</body>

</script>


<html>
<head>
<meta charset="utf-8" />
<title>jQuery Ajax - GET</title>
<script type="text/javascript" src="jquery_1.6.1.js"></script>
<script type="text/javascript">
$(function() {
$("#accordion").load("update.php");
var refresh = setInterval(function() {
$k("#accordion").load("update.php");
}, 5000);
});
</script>
</head>
<body>
<div id="dv">Here will be displayed the response.</div><br />
<button id="buton">Click</button>
</body>
</html>


und alle haben keine auswirkungen ,habe mit jquery ein ein tag rum getestet nix zu wohlen

also doch weiter versuchen das irgend wir mit prototype und scriptaculous zu regeln ;)
12.05.2012
seevan 11 1 2

Stelle deine Programmieren-Frage jetzt!