2017-02-21 4 views
0

Ich versuche, eine PHP-Variable in eine JS-Variable zu konvertieren, damit ich es in einem Spiel, das ich mache, verwenden kann. Wenn ich den Kartencode überprüfe, ist es nur undefined. Danke im Voraus. FYI das PHP funktioniert.PHP-Variable zu JS-Variable mit AJAX

<script> 
    var mapCode; 
    var used; 
    var active; 

    function downloadCode() { 
     $.ajax({ 
      type: 'GET', 
      url: 'getMapCode.php', 
      data: { 
       mapCode: $mapCode, 
       used: $used, 
       active: $active, 
      }, 
      dataType: "text", 
     }); 
    } 
</script> 
<?php 
    ini_set('display_errors', 1); 
    error_reporting(E_ALL); 
    $servername = "localhost"; 
    $username = "username"; 
    $password = "password"; 
    $dbname = "database"; 

    // Create connection 
    $conn = mysqli_connect($servername, $username, $password); 
    mysqli_select_db($conn, $dbname); 

    // Check connection 
    if (!$conn) 
    { 
    die("Connection failed: " . mysqli_connect_error()); 
    } 
    // echo "Connected successfully"; 

    $query = "SELECT mapCode FROM mapCodes"; 
    $result = mysqli_query($conn, $query); 
    $mapCode = mysqli_fetch_row($result); 

    $query1 = "SELECT used FROM mapCodes"; 
    $result1 = mysqli_query($conn, $query1); 
    $used = mysqli_fetch_row($result1); 

    $query2 = "SELECT active FROM mapCodes"; 
    $result2 = mysqli_query($conn, $query2); 
    $active = mysqli_fetch_row($result2); 

    mysqli_close($conn); 
?> 

Ich verstehe, dass die PHP-Code scheußlich ist, aber es funktioniert und ich werde ‚ziemlich‘ ihn später, wenn das Ganze

+1

mapCode:

+1

Mögliche Duplikat [Wie gebe ich eine korrekte Erfolgs-/Fehlermeldung für JQuery .ajax() mit PHP zurück?] (Http://stackoverflow.com/questions/9676084/how-do-i-return-a-proper-success-error- Chaos age-for-jquery-ajax-using-php) – emstawicki

+0

Das hilft: var mapCode = ""; – Omi

Antwort

0

arbeiten Sie brauchen nur < zu benutzen? php echo $ mapCode;?> statt $ mapCode. .... php Variablen können nicht Schilf sein whithout offen Php Tag

0

Mein aktuelles Projekt tatsächlich mit vielen Ajax-Aufrufe zu tun hat, hier ist die vereinfachte Version von dem, was ich mit dem Server verwenden, um zu kommunizieren:

// php 
// needed functions 
function JSONE(array $array) 
{ 
    $json_str = json_encode($array, JSON_NUMERIC_CHECK); 
    if (json_last_error() == JSON_ERROR_NONE) 
    { 
     return $json_str; 
    } 
    throw new Exception(__FUNCTION__.': bad $array.'); 
} 
function output_array_as_json(array $array) 
{ 
    if (headers_sent()) throw new Exception(__FUNCTION__.': headers already sent.'); 
    header('Content-Type: application/json'); 
    print JSONE($array); 
    exit(); 
} 

// pack all data 
$json_output = array(
    'mapCode' => $mapCode, 
    'used'  => $used, 
    'active' => $active 
); 

// output/exit 
output_array_as_json($json_output); 


// javascript 
function _fetch() 
{ 
    return $.ajax({ 
     url: 'getMapCode.php', // url copied from yours 
     type: 'POST', 
     dataType: 'json', 
     success: function(data, textStatus, req){ 
      console.log('server respond:', data); 
      window.mydata = data; 
     }, 
     error: function(req , textStatus, errorThrown){ 
      console.log("jqXHR["+textStatus+"]: "+errorThrown); 
      console.log('jqXHR.data', req.responseText); 
     } 
    }); 
} 

window.mydata = null; 
_fetch(); 

Ich habe das nicht getestet, aber lassen Sie es mich wissen, ich werde es für Sie reparieren.

0

Wie habe ich Sie bekommen, was Sie brauchen um das Ergebnis von Ajax-Anforderung zu erhalten, es zu tun, sollten Sie zunächst Setup Ihre PHP gibt Ihre Ergebnisse, so kann die Ajax-Ergebnisse von php erhalten wie diese outputed:

<?php 
    ini_set('display_errors', 1); 
    error_reporting(E_ALL); 
    $servername = "localhost"; 
    $username = "username"; 
    $password = "password"; 
    $dbname = "database"; 

    // Create connection 
    $conn = mysqli_connect($servername, $username, $password); 
    mysqli_select_db($conn, $dbname); 

    // Check connection 
    if (!$conn) 
    { 
    die("Connection failed: " . mysqli_connect_error()); 
    } 
    // echo "Connected successfully"; 

    $query = "SELECT mapCode FROM mapCodes"; 
    $result = mysqli_query($conn, $query); 
    $mapCode = mysqli_fetch_row($result); 

    $query1 = "SELECT used FROM mapCodes"; 
    $result1 = mysqli_query($conn, $query1); 
    $used = mysqli_fetch_row($result1); 

    $query2 = "SELECT active FROM mapCodes"; 
    $result2 = mysqli_query($conn, $query2); 
    $active = mysqli_fetch_row($result2); 

    mysqli_close($conn); 
    // Outputing results: 
    echo json_encode(array('mapCode'=>$mapCode[0], 'used'=>$used[0], 'active'=>$active[0])); 
?> 

dann in ajax, verwenden success für das hören Rückmeldung nach ajax beendet:

<script> 
    var mapCode; 
    var used; 
    var active; 

    function downloadCode() { 
     $.ajax({ 
      type: 'GET', 
      url: 'getMapCode.php', 
      data: { 
       /** Your data to send to server **/ 
      }, 
      dataType: "text", 
      success: function(data) { /** Here is data returned by php echo **/ 
       var temp = $.parseJSON(data); 
       mapCode = temp['mapCode']; 
       used = temp['used']; 
       active = temp['active']; 
      } 
     }); 
    } 
</script> 
+0

Danke für die Antwort, aber wenn ich dies in den Code einfüge, bekomme ich immer noch undefined als den Kartencode. Danke tho :) –

+0

'mysqli_fetch_row' gibt Array zurück, wird PHP Ausgabe in 1 Minute ändern, überprüfen Sie jetzt – Ultrazz008

+0

Haben Sie jetzt versucht mit der Ausgabe von PHP:' echo json_encode (array ('mapCode' => $ mapCode [0], 'used '=> $ used [0],' active '=> $ active [0])); ' – Ultrazz008

1

Wenn die Dateierweiterung .php und nicht .js ist, dann sollten diese

arbeiten
<script> 
    function downloadCode() { 
     $.ajax({ 
      type: 'GET', 
      url: 'getMapCode.php', 
      data: { 
       mapCode: "<?php echo $mapCode; ?>", 
       used: "<?php echo $used; ?>", 
       active: "<?php echo $active; ?>", 
      }, 
      dataType: "text", 
     }); 
    } 
</script> 

Wenn Sie .js Datei dann JavaScript-Variable deklarieren, bevor Sie Ihre js in .php Datei

<script> 
    var mapCode = "<?php echo $mapCode; ?>"; 
    var used = "<?php echo $used; ?>"; 
    var active = "<?php echo $active; ?>"; 
</script> 

dann in .js Datei einschließlich erhalten Sie leicht

<script> 
    function downloadCode() { 
     $.ajax({ 
      type: 'GET', 
      url: 'getMapCode.php', 
      data: { 
       mapCode: mapCode, 
       used: used, 
       active: active, 
      }, 
      dataType: "text", 
     }); 
    } 
</script> 
+0

Hallo, nach einer sehr langen Nacht Kaffee habe ich diese Arbeit mit Hilfe von @ Ultrazz008 Vielen Dank für den Vorschlag tho :) –