2016-04-05 10 views
1

bedingt zu rendern render Ich habe eine Schaltfläche, die erfolgreich eine "mehr laden" bei Klick auslöst. Nach dem Klicken wird eine SESSION-Variable festgelegt. Wenn der Benutzer die Seite neu lädt, sollten die neuen Posts bereits geladen sein, damit der Benutzer nicht erneut auf "load more" klicken muss.Verwenden Sie PHP, um einen Javascript-Funktionsaufruf im Browser

Ich möchte daher die gleiche „Last mehr“ Javascript-Funktion in einer PHP-IF-Anweisung machen, nach, wenn eine Session oder Cookie gesetzt ist oder nicht:

<?php 
if ((isset($_SESSION['isloaded'])) || (isset($_COOKIE['isloaded']))){ 
echo '<script>loadmore(\'posts\');</script>'; 
} 
else { 
echo '<a href="#" onClick="return false" onmousedown="javascript:loadmore(\'posts\');" class="btn btn-primary" id="load-more-btn">Load More</a>'; 
} 
?> 

Doch die Javascript bekommt einmal nicht ausgelöst Die Seite wird gerendert. Was mache ich falsch?

+1

Wo in Bezug auf diesen Codeausschnitt wird die 'loadmore' Funktion definiert? Es sollte definiert werden, bevor Sie versuchen, es aufzurufen. Überprüfen Sie die Browserkonsole auf Fehler. –

+0

http://www.w3schools.com/jsref/event_onload.asp – JimmyB

+0

können Sie den Javascript-Teil Ihres Codes hinzufügen – sujivasagam

Antwort

0

Ihr JavaScript automatisch ausgeführt haben, können Sie die onLoad event verwenden können, wie

<body onload="loadmore('posts')"> 
... 
</body> 

oder vielleicht

<body onload="conditionally_loadmore('posts')"> 
<?php 
if ((isset($_SESSION['isloaded'])) || (isset($_COOKIE['isloaded']))){ 

    // Only have the function do something if we really want to. 
    echo '<script>function conditionally_loadmore(s) {'; 
    echo ' loadmore(s); '; 
    echo '}</script>'; 
} 
else { 

    echo '<script>function conditionally_loadmore(s) {'; 
    echo ' // Do nothing. '; 
    echo '}</script>'; 

    echo '<a href="#" onClick="return false" onmousedown="javascript:loadmore(\'posts\');" class="btn btn-primary" id="load-more-btn">Load More</a>'; 
} 
?> 

oder, wie @Astaroth vorgeschlagen:

<body 
    <?php 
     if ((isset($_SESSION['isloaded'])) || (isset($_COOKIE['isloaded']))) { 
     echo 'onload="loadmore(\'posts\')"'; 
     } 
    ?> 
>... 
+1

Ich denke, das ist, was das OP braucht, nur klarstellen, dass er die 'onload =" loadmore ('posts') "' mit etwas wie ' 'so wird der Onload nur eingefügt, wenn die" Cookie-Bedingungen "erfüllt sind. Nur für den Fall, dass das OP nicht sieht, an wen Sie Ihre Antwort richten sollen. – Astaroth

2

Als @ Austin und @Angry Coder sagten, überprüfe deine Konsole auf Fehler.

Stellen Sie außerdem sicher, dass die Funktion loadmore() definiert ist, bevor sie aufgerufen wird. Also entweder die Funktionsdeklaration über den loadmore('posts'); Anruf setzen oder den Anruf über eine onload oder etwas ähnliches hinzufügen.

Eine andere Sache, vielleicht für Klarheit Sie Ihren Code wie schreiben können (aber es ist eine Meinung):

<?php if ((isset($_SESSION['isloaded'])) || (isset($_COOKIE['isloaded']))) { ?> 
     <script>loadmore('posts');</script> 
<?php } else { ?> 
     <a href="#" onClick="return false" onmousedown="javascript:loadmore('posts');" class="btn btn-primary" id="load-more-btn">Load More</a> 
<?php } ?> 
Verwandte Themen