2

ワーカーと呼ばれるいくつかの要素を取得しました。それらはすべて ID、位置左、および位置トップを取得しました。私はそれを配列にしてから、データベースに送信したいjsonオブジェクトにしました。しかし、コントローラーとモデルでテストすると、値がnullであると表示されます。何をすべきか?

最初の関数:

function GetUnitInfo(){

          for(i=0 ; i < $('.Worker').length ; i++){
          $('.Worker').each(function(){

                aUnitsInfo = [{'unitid':$(this).attr("id"),
                              'unitposleft':$(this).position().left,
                              'unitpostop':$(this).position().top
                            }];

                 jUnitsInfo.push(aUnitsInfo[i]);
                 aUnitsInfo = JSON.stringify(jUnitsInfo);    

               console.log(i);

          });
          console.log("unitinfo: "+jUnitsInfo[i].unitid);
         console.log("uniposleft: "+jUnitsInfo[i].unitposleft);
         console.log("unitpostop: "+jUnitsInfo[i].unitpostop);
         console.dir(jUnitsInfo[i]);
        }

          }

私のログには、正しい値を持つ 3 つのオブジェクトが表示されます。

次に、データベースに送信します。

setInterval(function(){    
                SaveUnits();
                function SaveUnits()
                {   

                   GetUnitInfo();


                    $sLoginEmail = $('#TxtLoginEmail').val();
                    // TODO: Check that the email is valid
                    // console.log("The email is:"+$sLoginEmail); 
                    $.ajax({
                        type: 'post',
                        url: 'bridge.php',
                        data: {"sFunction":"SaveUnits", "unitsInfo":jUnitsInfo[i]},
                        success: function(data){
                            console.log(data);
                            $oXml = $(data);

                        }
                    });
                }
        },5000);

そして、ここが難しいところです。最初の関数から、jUnitsInfo[i] に正しいオブジェクトが含まれていることがわかりますが、この部分の後は null のようです。

これは私の橋です:

     if($_POST['sFunction'] == "SaveUnits")
{
    require_once 'Controllers/UserController.php';
    $oUnitsInfo = new USerController();
    echo $oUnitsInfo->SaveUnits($_POST['unitsInfo']); 
}

コントローラー:

    public function SaveUnits($unitsInfo)
{require_once 'Models/UserModel.php';
    $oUserModel = new UserModel();
    $unitsInfo = json_decode($unitsInfo);
    $saveUnits = $oUserModel->SaveUnits($unitsInfo);}

そしてモデル:

    public function SaveUnits($unitsInfo){        
    // Create connection
    $con = mysqli_connect("localhost","root","","awesomegame");
    // Check connection
     if (mysqli_connect_errno($con))
    {
        echo "Failed to connect to MySQL: " . mysqli_connect_error();
    }


    $unitsInfo = array(); 
    foreach( $unitsInfo as $row ) {
    $sql[] = '("'.mysql_real_escape_string($row['unitId']).'", '.$row['unitPosTop'].','.$row['unitPosLeft'].')';
    }
    mysql_query('INSERT INTO units (unitid, unitpostop, unitposleft) VALUES '.implode(',', $sql));}}

そして、コントローラーでvar_dump(json_decode($unitsInfo)); var_dump(json_decode($unitsInfo)); null が返されるだけです。

配列を正しく送信するにはどうすればよいですか? - 異なる行でデータベースに書き込まれた値を取得します (ワーカーごとに 1 つ)。

4

1 に答える 1