Jump to content

Uncaught SyntaxError: Unexpected token < in JSON


SVerheijen
Go to solution Solved by maxxd,

Recommended Posts

$.ajax({
                            type: "POST",
                            url: "aj/write.php",
                            dataType: "html",
                            data: update
                        }).done(function (returned) {
                            var data;
                            data = JSON.parse(returned);

                            message = data.message;


                            if (data.code == 200) {
                                lastChanged = data.users;
                                var params = {};
                                params.changes = lastChanged;
                                params.newTask = data.new;
                                if (data.new.projectleider == false) {
                                    params.organizer = {
                                        'naam': currentUser.naam,
                                        'email': currentUser.email
                                    };
                                } else {
                                    params.organizer = {
                                        'naam': data.new.projectleider.naam,
                                        'email': data.new.projectleider.email
                                    };
                                }

                                message = message + " <a href='#' onclick='outlookMail(" + JSON.stringify(params) + ", \"FREE\")'>Mail wijzigingen (Vrij)</a> <b>OF</b> <a href='#' onclick='outlookMail(" + JSON.stringify(params) + ", \"BUSY\")'>Mail wijzigingen (Bezet)</a> <b>OF</b> <a href='#' onclick='outlookMail({}, \"NONE\")'>Melding sluiten (geen mail)</a>";
                            } else if (data.code == 204) {
                                message = data.message;
                            }

                            $("#notifybar").html(message);
                            $("#notifybar").animate({'height': 'show'}, 400);

                        });
<?php
    include '../../includes/open_database_beheer.php';
    include '../resources/database/MysqliDb.php';
    $db = new MysqliDb ($server, $user, $password, $database);


    // OLD
    // $queryForCheckInLijst = "SELECT `gebruikersid`, `datum`, `dagdeel`, `legid` FROM `planning_lijst` WHERE `gebruikersid` = ( SELECT ID FROM planning_gebruikers WHERE login = ? LIMIT 1) AND `datum` = ? AND `dagdeel` = ?";
    // NEW
    $queryForCheckInLijst = "
        SELECT `gebruiker` gebruikersid, `datum`, `dagdeel`, `taak` legid
        FROM `planning`
        WHERE 
            `gebruiker` = ( SELECT `id` FROM `gebruikers` WHERE `login` = ? LIMIT 1) 
            AND `datum` = ? 
            AND `dagdeel` = ?
    ";

    $return = [];
    if (!empty($_POST)) {
        $return['postedIn'] = $_POST;
        $return['users'] = [];


        foreach ($_POST as $data) {
            if ($data['changeto'] == "griditem undefined") {
                $id = 0;
                $newName = "Standaardindeling";
                $projectLead = false;
            } else {
                $id = substr($data['changeto'], 14);

                $newName = $db->rawQueryValue("
                    SELECT
                        `naam`
                    FROM
                        `legenda`
                    WHERE
                        `id` = ?
                    limit 1
                ", array(






























                ))[0];

                $projectLead = $db->rawQueryOne("
                    SELECT
                        `legenda`.`projectleider`,
                        `gebruikers`.`naam`,
                        `gebruikers`.`email`
                    FROM
                        `legenda`
                    INNER JOIN `gebruikers`
                    ON `legenda`.`projectleider` = `gebruikers`.`id`
                    WHERE
                        `legenda`.`id` = ?
                ", array(
                    $id
                ));
            }
            if (!isset($return["new"])) {
                $return["new"] = [
                    "id" => $id,
                    "name" => $newName,
                    "projectleider" => ($projectLead == null ? false : $projectLead)
                ];
            }

            /* if ($data['daypart'] == "AM") { $daypart = 0; };
            if ($data['daypart'] == "PM") { $daypart = 1; };
            if ($data['daypart'] == "NIGHT") { $daypart = 2; }; */
//OLD       $daypart = (($data['daypart'] == "AM") ? 0 : 1);
//NEW $daypart word een (0 als AM oftewel ochtend, 1 als PM oftewel middag, 2 als NIGHT oftewel avond)
            switch ($data['daypart']) {
                case "AM":
                    $daypart = 0;
                    break;
                case "PM":
                    $daypart = 1;
                    break;
                case "NIGHT":
                    $daypart = 2;
                    break;
                default:
                    $daypart = 0;
                    break;
            }
            //var_dump ($daypart); die();
            $date = $data['date'];
            //echo '<h1>'.$date.'<h1>'; die();
            $CheckInLijstResult = $db->rawQueryOne($queryForCheckInLijst, array($data['uid'], $date, $daypart));

            if (!isset($return['users'][$data['uid']])) {
                $return['users'][$data['uid']] = [];
            }
            if (!isset($return['users'][$data['uid']]['changes'])) {
                $return['users'][$data['uid']]['changes'] = [];
            }
            if (!isset($return['users'][$data['uid']]['info'])) {
                $return['users'][$data['uid']]['info'] = [];
                $userdata = $db->rawQueryOne("
                    SELECT
                        `naam`,
                        `email`
                    FROM 
                        `gebruikers`
                    WHERE
                        `id` = ( SELECT `id` FROM `gebruikers` WHERE `login` = ? LIMIT 1) 
                ", array(
                    $data['uid']
                ));
                $return['users'][$data['uid']]['info'] = $userdata;
            }
            $temp = [];

            unset($exists);
            // Warning: This might be a security hole (unsafe query, vulnerable to injection). Unpatched because it's running on the internal network and includes only non-critical data.
            if (isset($data['changingDefault']) && $data['changingDefault'] == 1) {
				//OUD WERKT NIET VOOR NIGHT
                //$field = strtolower(preg_replace("/^(\w{2})([ab])(\w\w)$/", "$1_$2_$3", $data['date']));
                
				//NIEUW WERKT WEL VOOR NIGHT
				$array = array();
				$array = $data['date'];				
				$dag = $array[0].$array[1];
				$week = $array[2];
				$dag_deel = substr($data['date'],3);
				$field = $dag.'_'.$week.'_'.$dag_deel;
				$field = strtolower($field);
								
                //OLD
                //$query = "UPDATE planning_gebruikers SET $field = {$id} WHERE login = ?";
                //NEW
                $query = "UPDATE `gebruikers` SET $field = {$id} WHERE login = ?";
                $db->rawQuery($query, array($data['uid']));

            } else if (count($CheckInLijstResult) > 0) {
                $leaveLegendId = $db->rawQueryValue("SELECT `id` FROM `legenda` WHERE `naam` = 'VRIJ' LIMIT 1");

                //Als de nieuwe indeling gelijk is aan de standaardindeling van de gebruiker,verwijder de gevonden rij in planing_lijst.
                if ($id == 0) {
                    //OLD
                    //$queryDelete = "DELETE FROM `planning_lijst` WHERE `gebruikersid` = {$CheckInLijstResult["gebruikersid"]} AND `datum` = '{$CheckInLijstResult["datum"]}' AND `dagdeel` = {$CheckInLijstResult["dagdeel"]}";
                    //NEW
                    $queryDelete = "DELETE FROM `planning` WHERE `gebruiker` = ? AND `datum` = ? AND `dagdeel` = ?";
                    $db->rawQuery($queryDelete, array(
                        $CheckInLijstResult["gebruikersid"],
                        $CheckInLijstResult["datum"],
                        $CheckInLijstResult["dagdeel"]
                    ));
                } else {
                    //OLD
                    //$db->rawQuery("UPDATE `planning_lijst` SET `legid` = ? WHERE `gebruikersid` = (SELECT ID FROM planning_gebruikers WHERE login = ? LIMIT 1) AND `datum` = ? AND `dagdeel` = ?", array($id, $data['uid'], $date, $daypart));
                    //NEW

                    $db->rawQuery("
                    UPDATE `planning` SET `taak` = ? 
                    WHERE `gebruiker` = (SELECT `id` FROM `gebruikers` WHERE `login` = ? LIMIT 1) AND `datum` = ? AND `dagdeel` = ?
                  ", array($id, $data['uid'], $date, $daypart)
                    );
                }


                if ($data['changeFrom'] == "griditem item_" . $leaveLegendId . " selected") {
                    try {
                        $exists = $db->rawQueryValue("
                            SELECT `verlof_dagen`.`id`
                            FROM `verlof_dagen` 
                            INNER JOIN `verlof` ON `verlof_dagen`.`verlof` = `verlof`.`id` 
                            WHERE 
                                `verlof`.`gebruiker` = ? 
                                AND `verlof_dagen`.`datum` = ? 
                                AND `verlof_dagen`.`dagdeel` = ?
                            LIMIT 1
                        ", array(
                            $CheckInLijstResult["gebruikersid"],
                            $CheckInLijstResult["datum"],
                            $CheckInLijstResult["dagdeel"]
                        ));
                        if (isset($exists)) {
                            $db->rawQuery("
                                DELETE FROM `verlof_dagen`  
                                WHERE 
                                    `verlof_dagen`.`id` = ?
                            ", array(
                                $exists[0]
                            ));
                        }
                    } catch (Exception $ex) {
                        $return = [];
                        $return['code'] = 500;
                        $return['message'] = "Er is iets mis gegaan met het verwijderen in de tabel verlof_dagen";
                        echo json_encode($return);
                        return;
                    }
                }
            } else {
                if ($id == 0) {
                    //OLD
                    //$db->rawQuery("DELETE FROM planning_lijst WHERE gebruikersid=( SELECT ID FROM planning_gebruikers WHERE login =? LIMIT 1) AND datum=? AND dagdeel=?", array($data['uid'], $date, $daypart));
                    //NEW
                    $db->rawQuery("
                        DELETE FROM `planning` 
                        WHERE `gebruiker`=( SELECT `id` FROM `gebruikers` WHERE `login` = ? LIMIT 1) 
                        AND `datum` = ?
                        AND `dagdeel` = ?
                    ", array($data['uid'], $date, $daypart));
                } else {
                    $legid = substr($data['changeto'], 14);

                    //OLD
                    //$query = "INSERT INTO planning_lijst(gebruikersid, datum, dagdeel, legid) VALUES(( SELECT ID FROM planning_gebruikers WHERE login =? LIMIT 1), ?, ?, ?)";
                    //NEW
                    $query = "
                        INSERT INTO `planning`(
                            `gebruiker`, `datum`, `dagdeel`, `taak`
                        ) VALUES(
                            ( SELECT `id` FROM `gebruikers` WHERE `login` = ? LIMIT 1),
                            ?,
                            ?,
                            ?
                        )
                    ";
                    $db->rawQuery($query, array($data['uid'], $date, $daypart, $legid));
                }
            }

            $temp = array(

                "date" => $date,
                "daypart" => $daypart
            );

            array_push($return['users'][$data['uid']]['changes'], $temp);
            unset($temp);
        }

        $return['lastQuery'] = $db->getLastQuery();
        $return['code'] = 200;
        $return['message'] = "Planning bijgewerkt!";
    } else {
        $return['code'] = 204; // "Geen inhoud"
        $return['message'] = "Er is voor zo ver er gecontroleerd kan worden, niks meegestuurd. Probeer tenminste 1 blokje te selecteren en probeer het dan opnieuw <a href='#' onclick='outlookMail({}, \"NONE\")'>Klik hier om de melding sluiten</a>";
    }
    echo json_encode($return);
VM2851:1 Uncaught SyntaxError: Unexpected token < in JSON at position 0
    at JSON.parse (<anonymous>)
    at Object.<anonymous> (index.php?filter=0&w=10:236)
    at n (jquery.min.js:2)
    at Object.fireWith [as resolveWith] (jquery.min.js:2)
    at w (jquery.min.js:4)
    at XMLHttpRequest.d (jquery.min.js:4)

I don't know why there is an '<' in this error??? I can't find any place where it adds the '<'. Is this just my code or is this something else? Someone knows the solution???

Link to comment
Share on other sites

  • Solution

Typically this happens when PHP outputs an error. Check your console and see what the output is from the server. Looking at your $queryForCheckInLijst, it may be a SQL error - it looks like you've added a couple column names without commas. I haven't looked through the rest of the code, but that's a place to start.

Link to comment
Share on other sites

Typically this happens when PHP outputs an error. Check your console and see what the output is from the server. Looking at your $queryForCheckInLijst, it may be a SQL error - it looks like you've added a couple column names without commas. I haven't looked through the rest of the code, but that's a place to start.

Thanks for the answer. The query was right. I asked a friend and he found the problem. Somewhere in the query I forgot to put an variable. So it works fine now. Still thanks for helping :D!

Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.