2016-05-30 10 views
0

Hallo ich ein Skript codiert haben Informationen diejenigen zu aktualisieren Benutzerseite zu verlassen versucht, aber mein Code arbeiten nicht und weiß nicht, warum ich Hilfe brauchen, diese zu lösen:JQuery Ajax-mysql-Update, bevor Benutzer verlässt

jquery:

$(window).bind('beforeunload', function(){ 

    $.ajax({ 
     type: 'POST', 
     url: 'updateusers.php', 
     data: { 
      username: username, 
      usertype: usertype, 
      email: email, 
      level: level, 
      exp: exp, 
      money: money, 
      ninjarank: ninjarank, 
      avatar: avatar, 
      village: village, 
      clan: clan, 
      guild: guild, 
      healthpoint: healthpoint, 
      chakrapoint: chakrapoint, 
      ninjutsu: ninjutsu, 
      taijutsu: taijutsu, 
      genjutsu: genjutsu, 
      senjutsu: senjutsu, 
      talent: talent, 
      chakra: chakra, 
      health: health, 
      chakracontrol: chakracontrol 
     } 
    }); 
}); 

updateusers.php:

<?php 
require "mysql.php"; 
session_start(); 

    $userid = $_POST["userid"]; 
    $usertyp = $_POST["usertype"]; 
    $email = $_POST["email"]; 
    $level = $_POST["level"]; 
    $exp = $_POST["exp"]; 
    $money = $_POST["money"] + 1000; 
    $ninjarank = $_POST["ninjarank"]; 
    $avatar = $_POST["avatar"]; 
    $village = $_POST["village"]; 
    $clan = $_POST["clan"]; 
    $guild = $_POST["guild"]; 
    $healthpoint = $_POST["healthpoint"]; 
    $chakrapoint = $_POST["chakrapoint"]; 
    $ninjutsu = $_POST["ninjutsu"]; 
    $taijutsu = $_POST["taijutsu"]; 
    $genjutsu = $_POST["genjutsu"]; 
    $senjutsu = $_POST["senjutsu"]; 
    $talent = $_POST["talent"]; 
    $chakra = $_POST["chakra"]; 
    $health = $_POST["health"]; 
    $chakracontrol = $_POST["chakracontrol"]; 

     $stmt = $connect->prepare("UPDATE users u SET 
     u.usertype=?, 
     u.email=?, 
     u.level=?, 
     u.exp=?, 
     u.money=?, 
     u.ninjarank=?, 
     u.avatar=?, 
     u.village=?, 
     u.clan=?, 
     u.guild=?, 
     u.healthpoint=?, 
     u.chakrapoint=?, 
     u.ninjutsu=?, 
     u.taijutsu=?, 
     u.genjutsu=?, 
     u.senjutsu=?, 
     u.talent=?, 
     u.chakra=?, 
     u.health=?, 
     u.chakracontrol=? 
     WHERE userid= ?"); 
     $stmt->bind_param("isiiisssssiiiiiiiiiii", 
        $usertype, 
        $email, 
        $level, 
        $exp, 
        $money, 
        $ninjarank, 
        $avatar, 
        $village, 
        $clan, 
        $guild, 
        $healthpoint, 
        $chakrapoint, 
        $ninjutsu, 
        $taijutsu, 
        $genjutsu, 
        $senjutsu, 
        $talent, 
        $chakra, 
        $health, 
        $chakracontrol, 
        $userid 
         ); 

     $stmt->execute(); 
     $stmt->close(); 
     $connect->close(); 
?> 

so versuche ich alle Informationen diejenigen senden Benutzerseite zu verlassen versucht, updateusers.php und es Update-Abfrage zu tun, aber aus irgendeinem Grund es funktioniert nicht, ich habe dies nur gemacht, um zu sehen, ob es funktioniert oder nicht $ Geld = $ _POST ["Geld"] + 1000; ich addiere +1000 auf jedes Mal, wenn Benutzer verlässt, aber überhaupt nichts an Datenbank geändert

+0

Sind alle Variablen global, die Sie mit Ajax an den Server senden? Und Sie können 'async: false' verwenden, um sicherzustellen, dass die Anfrage abgeschlossen wurde. und Sie können auch hinzufügen 'ignore_user_abort();' mehr [hier] (http://php.net/manual/en/function.ignore-user-abort.php) – itzmukeshy7

+0

Ich sende SESSION-Variablen – yahoo5000

Antwort

0

Mit beforeunload Ereignis müssen Sie eine Nachricht zurückgeben, die dem Benutzer mitgeteilt wird. Für weitere Details können Sie hier lesen: https://developer.mozilla.org/en/docs/Web/Events/beforeunload

In Ihrem Fall: 1. Stellen Sie sicher, dass Ajax-Code keine Fehler hat. 2. Fügen Sie der Ereignisfunktion einen Rückgabewert hinzu.

$(window).bind('beforeunload', function(){ 
    var confirmationMessage = 'Are you sure you want to leave?'; 
    $.ajax({ 
     type: 'POST', 
     url: 'updateusers.php', 
     data: { 
      username: username, 
      usertype: usertype, 
      email: email, 
      level: level, 
      exp: exp, 
      money: money, 
      ninjarank: ninjarank, 
      avatar: avatar, 
      village: village, 
      clan: clan, 
      guild: guild, 
      healthpoint: healthpoint, 
      chakrapoint: chakrapoint, 
      ninjutsu: ninjutsu, 
      taijutsu: taijutsu, 
      genjutsu: genjutsu, 
      senjutsu: senjutsu, 
      talent: talent, 
      chakra: chakra, 
      health: health, 
      chakracontrol: chakracontrol 
     } 
    }); 
    e.returnValue = confirmationMessage;// Gecko, Trident, Chrome 34+ 
    return confirmationMessage;// Gecko, WebKit, Chrome <34 
}); 

Ich hoffe, dass hilft.

+0

Ich gebe das aber zurück eather funktioniert nicht: var newvariable = alert ("test"); Rückgabe neue Variable; – yahoo5000

0

Zuerst müssen Sie überprüfen, dass Ihre gesamte Postwert auf updateusers.php mit print_r ($ _ POST) vorhanden ist.

Dann sehen Sie hier, welche Werte post sind und welche nicht. Danach wenden Sie Ihre Bedingung für das Update an.

Verwandte Themen