意外的<在位置0的JSON中的令牌

时间:2016-12-29 14:28:39

标签: php jquery json ajax

我一直收到这个JSON错误,我认为它与html标签或与之冲突的任何其他标签有关。

这是我的PHP代码:

 <?php
    require_once("connection.php");

    class AddAdminUPController extends Connection{

        public function addAdminUP(){
            include "function.php";
            $username = cleanData($_POST['username']);
            $password = cleanData($_POST['password']);
            if (!empty($username)){
                if(!empty($password)){
                    if(strlen($password) > 8){
                        $select_query = "select * from sample_user where user_name = ?";
                        $stmt = $this->db->prepare($select_query);
                        $stmt->bindParam(1,$username);
                        if($stmt->execute()){
                            if($stmt->rowCount() <= 0){
                                $password = password_hash($password,PASSWORD_BCRYPT,array('cost' => 12));
                                $create_query = "insert into sample_user(user_name,password)values(?,?)";
                                $stmt = $this->db->prepare($create_query);
                                $stmt->bindParam(1,$username);
                                $stmt->bindParam(2,$password);
                                if($stmt->execute()){
                                    echo "<script>".
                                         "Materialize.toast('Created SuccessFully!', 5000, 'green')"
                                        ."</script>";
                                    echo "<script>".
                                         "$('#add_admin_up_form').hide();".
                                         "$('#add_admin_up').hide();";
                                    ?>

                                    $(".enrollment_title").html("<i class='material-icons'>fingerprint</i> Enroll Fingerprint");

                                    <?php
                                    echo "</script>";

                                    include 'flexcode_sdk/include/global.php';
                                    include 'flexcode_sdk/include/function.php';
                                    if(isset($_GET['action']) && $_GET['action'] == 'add'){
                                        $lastID = $this->db->lastInsertId();
                                    ?>

                                    <script type="text/javascript">

                                        $('title').html('User');
                                        function user_register(user_id, user_name) {

                                            $('body').ajaxMask();

                                            regStats = 0;
                                            regCt = -1;
                                            try
                                            {
                                                timer_register.stop();
                                            }
                                            catch(err)
                                            {
                                                console.log('Registration timer has been init');
                                            }

                                            var limit = 4;
                                            var ct = 1;
                                            var timeout = 5000;

                                            timer_register = $.timer(timeout, function() {
                                                console.log("'"+user_name+"' registration checking...");
                                                user_checkregister(user_id,$("#user_finger_"+user_id).html());
                                                if (ct>=limit || regStats==1)
                                                {
                                                    timer_register.stop();
                                                    console.log("'"+user_name+"' registration checking end");
                                                    if (ct>=limit && regStats==0)
                                                    {
                                                        alert("'"+user_name+"' registration fail!");
                                                        $('body').ajaxMask({ stop: true });
                                                    }
                                                    if (regStats==1)
                                                    {
                                                        $("#user_finger_"+user_id).html(regCt);
                                                        alert("'"+user_name+"' registration success!");
                                                        $('body').ajaxMask({ stop: true });
                                                        load('view_admin.php?action=add');
                                                    }
                                                }
                                                ct++;
                                            });
                                        }

                                        function user_checkregister(user_id, current) {
                                            $.ajax({
                                                url         :   "view_admin.php?action=checkreg&user_id="+user_id+"&current="+current,
                                                type        :   "GET",
                                                success     :   function(data)
                                                                {
                                                                    try
                                                                    {
                                                                        var res = jQuery.parseJSON(data);
                                                                        if (res.result)
                                                                        {
                                                                            regStats = 1;
                                                                            $.each(res, function(key, value){
                                                                                if (key=='current')
                                                                                {
                                                                                    regCt = value;
                                                                                }
                                                                            });
                                                                        }
                                                                    }
                                                                    catch(err)
                                                                    {
                                                                        alert(err.message);
                                                                    }
                                                                }
                                            });
                                        }

                                    </script>

                                    <?php

                                        $last_id_query = "select * from sample_user where user_id = ?";
                                        $stmt = $this->db->prepare($last_id_query);
                                        $stmt->bindParam(1,$lastID);
                                        if ($stmt->execute()){
                                            while($row = $stmt->fetch(PDO::FETCH_OBJ)){

                                                $url_register =
                                                base64_encode($base_path."register.php?user_id=".$row->user_id);
                                                echo "<br><a href='finspot:FingerspotReg;$url_register' onclick=\"user_register('".$row->user_id."','".$row->user_name."')\" class='fw_button general_button btn waves-effect waves-light'>Register Fingerprint</a>";
                                            }
                                        }
                                    }
                                    elseif (isset ($_GET['action']) && $_GET['action'] == 'checkreg') {

                                            $sql1       = "SELECT count(finger_id) as ct FROM sample_finger WHERE user_id=".$_GET['user_id'];
                                            $result1    = mysql_query($sql1);
                                            $data1      = mysql_fetch_array($result1);
                                            if (intval($data1['ct']) > intval($_GET['current'])) {
                                                $res['result'] = true;
                                                $res['current'] = intval($data1['ct']);
                                            }
                                            else
                                            {
                                                $res['result'] = false;
                                            }
                                            echo json_encode($res);
                                    }
                                    else { echo "Parameter invalid..";}
                                }
                                else{
                                    echo "<script>".
                                         "Materialize.toast('Query Failed!', 5000, 'red')"
                                        ."</script>";
                                }
                            }
                            else{
                                echo "<script>".
                                     "Materialize.toast('Username already exists!', 5000, 'red')"
                                    ."</script>";
                            }
                        }
                        else{
                            echo "<script>".
                                 "Materialize.toast('Query Failed!', 5000, 'red')"
                                ."</script>";
                        }
                    }
                    else{
                        echo "<script>".
                             "Materialize.toast('Password is too short!', 5000, 'red')"
                            ."</script>";
                    }
                }
                else{
                    echo "<script>".
                         "Materialize.toast('Password is empty!', 5000, 'red')"
                        ."</script>";
                }
            }
            else{
                echo "<script>".
                     "Materialize.toast('Username is empty!', 5000, 'red')"
                    ."</script>";
            }

        }
    }
$add_admin_up_controller = new AddAdminUPController;
echo $add_admin_up_controller->addAdminUP();

?>

我需要帮助来解决这种错误。它一直显示:

  

SyntaxError:意外的令牌&lt;在JSON的位置0处的JSON.parse()位于Function.sjccess.parseJSON(jquery.js:8520)的Object.success(eval at(jquery.js:339),:55:90)at fire(jquery.js) :3148)在Object.fireWith [as resolveWith](jquery.js:3260)at done(jquery.js:9314)at XMLHttpRequest.callback(jquery.js:9718)

2 个答案:

答案 0 :(得分:0)

在你的ajax调用中输入响应dataType:&#39; json&#39;和PHP的一部分:

echo json_encode($res);
exit;

此致

答案 1 :(得分:0)

由于您的响应而导致的此错误不是json格式,并且您的ajax请求期望json响应。 您可以使用dataType更改responce标头:&#39; text / html&#39;在你的ajax请求中。

这里有效。

function user_checkregister(user_id, current) {
$.ajax({
    url         :   "view_admin.php?action=checkreg&user_id="+user_id+"&current="+current,
    type        :   "GET",
    dataType: 'text/html',
    success     :   function(data)
                    {
                        try
                        {
                            var res = jQuery.parseJSON(data);
                            if (res.result)
                            {
                                regStats = 1;
                                $.each(res, function(key, value){
                                    if (key=='current')
                                    {
                                        regCt = value;
                                    }
                                });
                            }
                        }
                        catch(err)
                        {
                            alert(err.message);
                        }
                    }
});
}