2016-04-06 14 views
0

anzufordern, mache ich eine Aufgabe für mein Projekt. Ich muss Ajax verwenden, um das mysql ohne Aktualisierungswebpage zu aktualisieren.Wie man Ajax verzögert, um URL

Ich habe 2 PHP-Datei, erste ist a.php und Code wie unten (Benutzer Kredit):

if($_GET['do'] == 'viewcredit'){ 
    $quser = DB::query("SELECT * FROM ".DB::table('game_jnship_user')." WHERE uid = '$_G[uid]'"); 
    $ruser = DB::fetch($quser); 
    //$moneyN = $ruser['money']; 
    echo $ruser['money']; 
} 

an zweiter Stelle PHP-Datei ist b.php und Code wie unten (eine Aktion tun):

$quser = DB::query("SELECT * FROM ".DB::table('game_jnship_user')." WHERE uid = '$_G[uid]'"); 
$ruser = DB::fetch($quser); 
$moneyN = $ruser['money']; 
$gcoin = $ruser['gcoin']; 
if($_GET['do'] == 'treasurehunt'){ 
    $moneyadd = $moneyN + 1; 
    DB::query("UPDATE ".DB::table('game_jnship_user')." SET money = '$moneyadd' WHERE uid = '$_G[uid]'"); 
} 
wie unten

Mein html Code:

<script src="https://code.jquery.com/jquery-1.12.2.js"></script> 
<script src="http://code.jquery.com/ui/1.11.4/jquery-ui.js"></script> 
<script>jQuery.noConflict();</script> 
<script> 
jQuery(function() { 
    jQuery(".submit_button").click(function() { 
     var url = "a.php?do=viewcredit"; 
     var decodedUrl = decodeURIComponent(url); 
     jQuery.ajax({ 
      type: "POST", 
      url: decodedUrl, 
      cache: true, 
      success: function(html){ 
      jQuery("#money").html(html); 
      } 
     }); 
    }); 
}); 
</script> 
<div id="money">$ruser[money]</div> 
<a href="javascript:;" onclick="showWindow('jn_spop', 'b.php?do=treasurehunt')" class="c_button submit_button"><strong>Confirm</strong></a> 

so, jetzt, wenn Ich klicke die letzte Reihe von html, die <a>Confirm</a>, zum ersten Mal, die <div id="money">$ruser[money]</div> wird nicht das neueste Ergebnis geben.

Ok, lassen Sie die $ruser[money] = '1'; sagen, nachdem ich die <a>Confirm</a> klicken, mysql die money-2 aktualisiert wurde, aber die <div id="money">$ruser[money]</div> zeigt noch 1. Nachdem ich <a>Confirm</a> Wieder einmal klicken, hat die <div id="money">$ruser[money]</div> zeigt 2 (aber mysql Update gewesen money-3 bereits.)

Also, wenn ich die ajax Verzögerung will die a.php?do=viewcredit zu tun, ist es möglich? von ist es anders haben kann ich die neueste $ruser[money] ohne refresh webpage bekommen?

Vielen Dank.

+0

Sie das Ergebnis Ihrer 'b.php' holen müssen und sagt ihm, um das Ergebnis zu zeigen Ajax – Chay22

+0

Sie haben zwei' onclick' Event-Handler html . Wenn Sie 'div # money' nach der Manipulation auf dem Server' treasehunt' aktualisieren müssen, können Sie den Code von 'viewcredit' in' showWindow' verschieben. Ich kann Ihnen nicht zeigen wie, weil die Implementierung fehlt. –

+0

Oder Sie können den tatsächlichen '$ ruser ['money']' bei 'treasehunt' zurückgeben und' div # money' updaten. –

Antwort

0

Sie können async: false einstellen. Aber wenn Ihre AJAX-Anfrage Zeit braucht, zeigen Sie einige Loader, damit der Benutzer versteht, dass einige Aktionen ausgeführt werden. um weitere Informationen überprüfen Sie bitte diesen Link: http://api.jquery.com/jquery.ajax/

jQuery.ajax({ 
     type: "POST", 
     url: decodedUrl, 
     cache: true, 
     async: false, 
     success: function(html){ 
     jQuery("#money").html(html); 
     } 
    }); 
+0

so, wie auch den Ajax-Code zu bearbeiten? Entschuldigung, ich bin Neuling in js .. –