Sesión de PHP no funciona con JQuery Ajax?

Actualización, resuelto: Después de todo esto, descubrí que estaba llamando a una versión anterior de mi código en la actualización ajax. 'boardControl.php' en lugar de 'boardUpdate.php' Estos son los tipos de errores que hacen que la programación sea divertida.

Estoy escribiendo un navegadorGomoku juego. Tengo la declaración ajax que le permite al jugador tocar una pieza.

$(document).ready(function() {
    $("td").live('click',function(){
        var value = $(this).attr('id');
        $.get('includes/boardControl.php',{play: value, bid: bid});
    });
});

valor = ubicación cuadrada del tablero
bid = board ID

Antes de crear un inicio de sesión de usuario para la identificación del jugador, el lado del servidor php tenía una solución temporal. Rotaría el estado de la pieza para los cuadrados cuando se haga clic en lugar de saber qué jugador crear para ellos.

Después de crear cosas de inicio de sesión, establezco una variable de sesión para la ID del jugador. Esperaba leer el ID de sesión del php durante la solicitud de ajax y averiguar qué jugador es desde allí.

session_start();

...

    $playerId = $_SESSION['char'];
    $Query=("SELECT p1, p2 FROM board WHERE bid=$bid");
    $Result=mysql_query($Query);
    $p1 = mysql_result($Result,0,"p1");
    $p2 = mysql_result($Result,0,"p2");
    $newPiece = 0; //*default no player
    if($playerId == $p1)
        $newPiece = 1;
    if($playerId == $p2)
        $newPiece = 2;

Por alguna razón, cuando ejecuto la aplicación web completa, las piezas aún continúan en ciclo, incluso después de haber eliminado el código para hacerlas circular. Además, después de iniciar sesión Si carga manualmente la página php en el navegador, modifica la base de datos correctamente (donde solo reproduce las piezas que pertenecen a ese reproductor) y genera los resultados correctos.

Me parece que la sesión no se está llevando a cabo cuando se utiliza con Ajax. Sin embargo, las búsquedas en Google me dicen que las sesiones funcionan con Ajax.

Actualización: estoy tratando de proporcionar más información.

El inicio de sesión funciona correctamente. Mi identificación es reconocida y la imprimí junto a la pizarra para asegurarme de que la estaba recuperando correctamente.

La solicitud de ajax actualiza el tablero. Los valores pasados ​​son correctos y confirmados con la consola de firebug. Sin embargo, en lugar de colocar solo las piezas para el jugador al que pertenecen, los ciclos a través de la pieza indican (0,1,2).

Cuando navega manualmente a boardUpdate.php y coloca los mismos valores enviados desde el Ajax, los resultados observados en la respuesta con eco indican que la pieza correspondiente se reproduce cada vez como se espera.

Los mismos resultados en mi computadora portátil después de la carga fresca de Firefox.

Navegando manualmente a boardUpdate.php sin iniciar sesión antes, deje el tablero sin cambios (como se pretende cuando no se encuentra ningún usuario en la sesión).

He verificado dos veces que session_start () está en los archivos php y he verificado dos veces las variables de identificación de la sesión.

Espero que esta información adicional ayude, me estoy quedando sin ideas qué decirles. ¿Debo cargar el código completo?

Actualización 2:

Después de verificar la respuesta del Ajax en Fire-Bug, me di cuenta de que la solicitud de 'juego' no obtiene un resultado, y el tablero no se actualiza hasta la próxima 'actualización'. Todavía estoy investigando esto pero lo publicaré aquí para ustedes también.

boardUpdate.php Los lugares notables son: Actualizar Tablero (línea 6) Poner pieza (línea 20) board board Actualizar ($ turnCount) (línea 63)

<?php
session_start();
require '../../omok/dbConnect.php';

    //*** Refresh Board ***
    if(isset($_GET['update']))
    {
        $bid = $_GET['bid'];
        $Query=("SELECT turn FROM board WHERE bid=$bid");
        $Result=mysql_query($Query);
        $turnCount=mysql_result($Result,0,"turn");

        if($_GET['turnCount'] < $turnCount) //** Turn increased
        {
            boardUpdate($turnCount);
        }
    }

    //*** Place Piece ***
    if(isset($_GET['play'])) // turn order? player detect?
    {
        $squareID = $_GET['play'];
        $bid = $_GET['bid'];

        $Query=("SELECT turn, boardstate FROM board WHERE bid=$bid");
        $Result=mysql_query($Query);
        $turnCount=mysql_result($Result,0,"turn");
        $boardState=mysql_result($Result,0,"boardstate");

        $turnCount++;

        $playerId = $_SESSION['char'];
        $Query=("SELECT p1, p2 FROM board WHERE bid=$bid");
        $Result=mysql_query($Query);
        $p1 = mysql_result($Result,0,"p1");
        $p2 = mysql_result($Result,0,"p2");
        $newPiece = 0; //*default no player
        if($playerId == $p1)
            $newPiece = 1;
        if($playerId == $p2)
            $newPiece = 2;

//      if($newPiece != 0)
//      {
            $oldPiece = getBoardSpot($squareID, $bid);
            $oldLetter = $boardState{floor($squareID/3)};
            $slot = $squareID%3;

            //***function updateCode($old, $new, $current, $slot)***
            $newLetter = updateCode($oldPiece, $newPiece, $oldLetter, $slot);
            $newLetter = value2Letter($newLetter);
            $newBoard = substr_replace($boardState, $newLetter, floor($squareID/3), 1);

            //** Update Query for boardstate & turn
            $Query=("UPDATE board SET boardState = '$newBoard', turn = '$turnCount' WHERE bid = '$bid'");
            mysql_query($Query);
//      }
        boardUpdate($turnCount);


    }

    function boardUpdate($turnCount)
    {
            $json = '{"turnCount":"'.$turnCount.'",';           //** turnCount **


            $bid = $_GET['bid'];
            $Query=("SELECT boardstate FROM board WHERE bid='$bid'");
            $Result=mysql_query($Query);
            $Board=mysql_result($Result,0,"boardstate");
            $json.= '"boardState":"'.$Board.'"';            //** boardState **


            $json.= '}';
            echo $json;
    }

    function letter2Value($input)
    {
        if(ord($input) >= 48 && ord($input) <= 57)
            return ord($input) - 48;
        else
            return ord($input) - 87;
    }

    function value2Letter($input)
    {
        if($input >= 10)
            return chr($input += 87);
        else
            return chr($input += 48);
    }


    //*** UPDATE CODE *** updates an letter with a new peice change and returns result letter.
    //***** $old : peice value before update
    //***** $new : peice value after update
    //***** $current : letterValue of code before update.
    //***** $slot : which of the 3 sqaures the change needs to take place in.
    function updateCode($old, $new, $current, $slot)
    {
        if($slot == 0)
        {// echo $current,"+((",$new,"-",$old,")*9)";
            return letter2Value($current)+(($new-$old)*9);
        }
        else if($slot == 1)
        {// echo $current,"+((",$new,"-",$old,")*3)";
            return letter2Value($current)+(($new-$old)*3);
        }
        else //slot == 2
        {// echo $current,"+((",$new,"-",$old,")";
            return letter2Value($current)+($new-$old);
        }
    }//updateCode()


    //**** GETBOARDSPOT *** Returns the peice value at defined location on the board.
    //****** 0 is first sqaure increment +1 in reading order (0-254).
    function getBoardSpot($squareID, $bid)
    {
        $Query=("SELECT boardstate FROM board WHERE bid='$bid'");
        $Result=mysql_query($Query);
        $Board=mysql_result($Result,0,"boardstate");


        if($squareID %3 == 2) //**3rd spot**
        {
            if( letter2Value($Board{floor($squareID/3)} ) % 3 == 0)
                return 0;
            else if( letter2Value($Board{floor($squareID/3)} ) % 3 == 1)
                return 1;
            else
                return 2;
        }
        else if($squareID %3 == 0) //**1st spot**
        {
            if(letter2Value($Board{floor($squareID/3)} ) <= 8)
                return 0;
            else if(letter2Value($Board{floor($squareID/3)} ) >= 18)
                return 2;
            else
                return 1;
        }
        else //**2nd spot**
        {
            return floor(letter2Value($Board{floor($squareID/3)}))/3%3;
        }
    }//end getBoardSpot()


?>

Por favor ayuda, estaré encantado de proporcionar más información si es necesario. Gracias de antemano =)

Respuestas a la pregunta(2)

Su respuesta a la pregunta