2

MAMPローカルApacheとmySQLサーバーを使用してアプリケーションをテストしていますが、成功出力で「null」値を取得し続けるため、コードがjQueryajax関数を介してデータを適切に渡していないようです。通常、ローカルサーバーとjQuery ajaxの使用に問題があるのか​​、それともコードに問題があるのか​​はわかりません。ここに参照用です:

JSファイル:

var curX = 2;
var curY = 6;

function boundary(moveX, moveY) {
var world = document.getElementById('overworld');
$.ajax({
    type: "POST",
    url: "php/tilecheck.php",
    dataType: "json",
    data: {x: curX + moveX, y: curY + moveY},
    success: function(data) {
        curX += moveX;
        curY += moveY;

        var left = data.lefttile;
        var right = data.righttile;
        var top = data.toptile;
        var bot = data.bottomtile;
        var xypos = document.getElementById("coord");
        xypos.innerText = curX + ", " + curY;

        if(left == 1){
            $("#aleft").css('display', 'none');
        }
        else {
            $("#aleft").css('display', '');
        }
        if(right == 1){
            $("#aright").css('display', 'none');
        }
        else {
            $("#aright").css('display', '');
        }

        if(top == 1){
            $("#atop").css('display', 'none');
        }
        else {
            $("#atop").css('display', '');
        }
        if(bot == 1){
            $("#abottom").css('display', 'none');
        }
        else {
            $("#abottom").css('display', '');
        }
        world.style.marginTop = -curX * 351 +"px";
        world.style.marginLeft = -curY * 351 +"px";
    }
});
}

私はhtmlファイルでonloadと呼んでいます:

<html>
<head>
    <script src="jquery-1.8.2.js"></script>
    <script src="game/bound.js"></script>
</head>
<body onload="boundary(0,0);">

そして、これが私がajax関数で呼び出す'tilecheck.php'コードです。

<?php
    mysql_connect('localhost', 'root', 'root') or die ('Error Connecting');
    mysql_select_db('testing_db') or die ('No Database');

    $x = $_REQUEST['x'];
    $y = $_REQUEST['y'];

    $q = "SELECT bound FROM tiles WHERE xpos = ".($x - 1)." AND ypos = $y LIMIT 1";
    $lefttile = mysql_fetch_assoc(mysql_query($q));

    $q = "SELECT bound FROM tiles WHERE xpos = ".($x + 1)." AND ypos = $y LIMIT 1";
    $righttile = mysql_fetch_assoc(mysql_query($q));

    $q = "SELECT bound FROM tiles WHERE xpos = $x AND ypos = ".($y - 1)." LIMIT 1";
    $toptile = mysql_fetch_assoc(mysql_query($q));

    $q = "SELECT bound FROM tiles WHERE xpos = $x AND ypos = ".($y + 1)." LIMIT 1";
    $bottomtile = mysql_fetch_assoc(mysql_query($q));

    $json = array(
    "x" => $x,
    "y" => $y,
    "lefttile" => $lefttile, "righttile" => $righttile,
    "toptile" => $toptile, "bottomtile" => $bottomtile
);

$output = json_encode($json);
echo $output;

?>

コードに実行させたいのは、データベースから値を取得し、値に応じて矢印ボタンを非表示または表示することです。ご意見やご不明な点がございましたら、お気軽にお問い合わせください。ありがとうございました。

アップデート

私はコードを少しいじって、ajax関数を投稿に変更しました:

$.post('php/tilecheck.php', {x: curX + moveX, y: curY + moveY}, function(data) {
    console.log(data);

そして、phpの$_REQUESTを$_POSTに変更しました。このスクリプトを実行すると、コンソールに次のように表示されます。

{"lefttile":"1","righttile":"1","toptile":"0","bottomtile":"1"} 

変数が「1」(mySQLで要求したバインドされた行の値)を渡すと、対応する矢印が消えます。ただし、定義した変数(var left = data.lefttile)にアラートを送信すると、コンソールに定義済み(この場合は1)と表示され、「undefined」と表示されます。理由はわかりません。ありがとうございました。

4

0 に答える 0