Search code examples
databaselimejs

Communicating with a DB in LimeJS


What is the proper way to load variables into my game from a DB?

I tried using Ajax and the Prototype library, but that doesn't seem to work. Here's what I did:

In my main .js game file...

var rawVocab = new Array();
var optionVocab = new Array();

new Ajax.Request('load_vocab.php', {
    onSuccess : function(xmlhttp) {
        eval(xmlhttp.responseText);
    }
});

'load_vocab.php' looks like this...

<?php

header('Content-Type: text/xml');
echo '<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>';

echo '<response>';

    $username = "user";
    $password = "***************";

    try {
        $conn = new PDO('mysql:host=localhost;dbname=tygrif_school', $username, $password);
        $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

        $stmt = $conn->prepare('SELECT * FROM vocabulary_game WHERE game_type = :game_type');
        $stmt->execute(array('game_type' => 'target'));

        $i=0;
        while($row = $stmt->fetch()) {
            echo "rawVocab[".$i."]['word']='".$row['word']."';";
            echo "rawVocab[".$i."]['translation']='".$row['translation']."';";
            echo "rawVocab[".$i."]['example_sentence_1']='".$row['example_sentence_1']."';";
            $i++;
        }

        $stmt = $conn->prepare('SELECT * FROM vocabulary_game');
        $stmt->execute(array());

        $i=0;
        while($row = $stmt->fetch()) {
            echo "optionVocab[".$i."]['word']='".$row['word']."';";
            echo "optionVocab[".$i."]['translation']='".$row['translation']."';";
            echo "optionVocab[".$i."]['example_sentence_1']='".$row['example_sentence_1']."';";
            $i++;
        }
    } catch(PDOException $e) {
        echo 'ERROR: ' . $e->getMessage();
    }

echo '</response>';

?>

Is there some built in way to handle this with the goog library?


Solution

  • Apparently, Google Closure has a built-in way (goog.net.XhrIo) to handle Ajax calls.

    1 - http://docs.closure-library.googlecode.com/git/class_goog_net_XhrIo.html

    2 - http://www.daveoncode.com/2009/11/17/goog-net-xhrio-make-simple-ajax-calls-with-google-closure/