2016-06-02 9 views
0

Ich versuche, ein Ajax-Skript zu machen, um automatisch die Menge an Spielgeld zu aktualisieren, das ein Nutzer auf meiner Seite hat, aber es funktioniert nicht. Ich bin nicht sehr gut mit Ajax, also habe ich definitiv etwas falsch gemacht, wenn mir jemand helfen könnte, würde ich es sehr schätzen.Ajax-Skript aktualisiert keine Informationen

Hier ist mein Code:

Javascript

<script type="text/javascript"> 
    (function($) { 
     $.ajaxSetup({ 
      cache: false, 
      beforeSend: function() { 
      $('#money').show(); 
      }, 
      complete: function() { 
      $('#money').show(); 
      }, 
      success: function() { 
      $('#money').show(); 
      }); 
     var $container = $("#money"); $container.load("challenges.php?money=<?php echo $_SESSION['Money'];?>"); 
     var refreshID = setInterval(function() { 
      $container.load("challenges.php?money=<?php echo $_SESSION['Money'];?>"); 
     }, 1000); 
     }); 
    })(jQuery); 
</script> 

PHP Teil

<?php 
    echo "<div id='money'>Balance: $".$_SESSION['Money']." ||</div> "; 
?> 

$_SESSION['Money'] ist gleich dem Nutzer viel Geld. Ich habe gesessen, seit Jahren herauszufinden, dass dies aus. Wenn Sie weitere Informationen benötigen, lassen Sie es mich wissen. Ich möchte dies tun, damit die Benutzer die Seite nicht aktualisieren müssen, um ihre Balance zu sehen. Ich habe versucht, ein Tutorial für einen Teil davon zu folgen, aber ich verlor mich und ich bin wirklich nicht gut mit Ajax. Jede Hilfe wird sehr geschätzt.

+2

Sie wahrscheinlich '.ajax $ verwenden gemeint()' statt '$ .ajaxSetup()' – BoltKey

+0

Ihr Javascript vollständig gebrochen ist, bitte beheben die Klammern. –

+0

@BoltKey Ich habe es geändert, aber es funktioniert immer noch nicht .. Ich bin so ein Noob mit diesem ... –

Antwort

3

$.load() kann einen optionalen Rückruf Parameter nehmen, siehe http://api.jquery.com/load/

Sie wollen wahrscheinlich, dies zu tun:

(function($) { 
    var $container = $("#money"); 

    function do_load(){ 
     $container.load("challenges.php?money=<?php echo $_SESSION['Money'];?>", function(){ 
      // show the container when loading is complete 
      $container.show(); 
     }); 
    } 

    do_load(); 
    var refreshID = setInterval(do_load, 1000); 
})(jQuery); 

komplett neu geschrieben und unter der Voraussetzung PHP JSON zurück:

HTML:

Balance: <span id="money"></span> 

JS:

(function($) { 
    var $container = $("#money"); 

    function do_load(){ 
     $.ajax({ 
     method: "POST", 
     url: "challenges.php?money=<?php echo $_SESSION['Money'];?>", 
     }).done(function(data) { 
     // write the value of balance to the container 
     console.log("Server returned:", data); 
     $container.html(data); 
     }).error(function(jqXHR, textStatus, errorThrown){ 
      console.log("Server returned an error:", textStatus, errorThrown); 
      console.log("jqXHR:", jqXHR); 
     }); 
    }; 

    do_load(); 
    var refreshID = setInterval(function(){ 
     do_load(); 
    }, 1000); 

})(jQuery); 

PHP:

<?php 
    // @TODO: fill your session variable (from a file/database/...) 
    $_SESSION['Money'] = rand(0, 100000); 
    echo $_SESSION['Money']; 
?> 
+0

Richtig in Ordnung, so sieht das aus wie etwas, das funktionieren sollte. Aber von meinen durchschnittlichen PHP Kenntnissen, sieht es aus wie 'challenges.php? Money =' ist GET? Ist es wichtig, dass ich POST für alles benutze, weil ich das versucht habe und es nicht funktioniert ... –

+0

Es tut mir leid, es ist eine Weile her, dass ich das letzte Mal in PHP programmiert habe, aber du hast Recht, '$ .load() 'sendet ein GET an den Server, das möglicherweise anders behandelt werden muss als ein POST. - und ach, ich habe gerade gemerkt, '# money' existiert nur nach der ersten' load'. –

+0

Also was muss ich anders machen, weil es POST ist, weißt du? Muss ich auch ändern, wo #money dann ist? Oder fügen Sie es irgendwo anders hinzu? –

Verwandte Themen