【问题标题】:VM299:1 Uncaught SyntaxError: Unexpected token u in JSON at position 0 at JSON.parse (<anonymous>)VM299:1 Uncaught SyntaxError: JSON.parse (<anonymous>) 位置 0 处 JSON 中的意外标记 u
【发布时间】:2020-04-12 17:11:48
【问题描述】:

我正在尝试使用 ajax 请求获取数据,以下是 ajax 请求。

document.getElementById("myForm").style.display = "block";
                    $('body').css('overflow','hidden');
                    $.ajax({  
                        type: 'POST',  
                        url: 'techtest.php', 
                        dataType: 'json',
                        data: { id: val },
                        success: function(response, status, xhr){ 
                            console.log(response.array[1]);
                            document.getElementById('tech_about_me').innerHTML = response.array[0];
                            document.getElementById('tech_assest_group').innerHTML = response.array[1];
                            document.getElementById('tech_skill_group').innerHTML = response.array[2]+""+response.array[3];
                            document.getElementById('tech_address').innerHTML = response.array[4];


                        },
                        error: function(data,XMLHttpRequest,xhr, textStatus, errorThrown) { 
                            console.log("Status: " + textStatus); console.log("Error: " + errorThrown); 
                            var err =  JSON.parse(xhr.responseText);
                            console.log(err.Message);

                            var json = $.parseJSON(data);
                            alert(json.error);
                        }  
                    });

但我收到错误“VM299:1 Uncaught SyntaxError: Unexpected token u in JSON at position 0 at JSON.parse()”

以下是我返回 json 的代码

<?php
 header("Content-Type: application/json");
 include "../common/config.php";
 include"../includes.php";
 include"session.php";
 // print_r('<script>console.log('.$_POST['id'].')</script>');
 $technician_details=$db->get_a_line("select * from user where user_id='".$_POST['id']."'");
 $about_me=$technician_details['about_me'];
 $address=$technician_details['address'];
 $assest_group=$technician_details['assest_group'];
 $skill_group=$technician_details['skill_group'];
 $skill_list=$technician_details['skill_list'];
 $data = array();
 $data[]=$about_me;
 $data[]=$assest_group;
 $data[]=$skill_group; 
 $data[]=$skill_list;
 $data[]=$address;
 $json_data = array(

        "recordsTotal"    => '5',  // total number of records
        "array"            => $data   // total data array
        );

 echo json_encode($json_data);  // send data as json format
 ?>

它以前工作过。但是在昨天测试时,我注意到它在我本地以外的电脑上出现错误。从明天早上开始,它开始在本地给同样的错误。请帮忙。

【问题讨论】:

  • 虽然不能回答您的问题,但值得注意的是您的代码容易受到 sql 注入的影响
  • 机会是,您尝试 JSON.parse 的东西是 undefined
  • 谢谢。将在@RamRaider 上工作
  • 上面的 PHP 是否都在 techtest.php 中?开始 PHP 标记之前是否有空格?包含的任何文件是否使用echoprint
  • 不,php之前没有空格,并且包含的​​文件中没有回显或打印@RamRaider

标签: javascript php json ajax


【解决方案1】:

在您发表最后一条评论后,我很快整理了一个小测试来模拟您的脚本正在做什么。这工作正常。

我建议先测试as-is,然后,如果您满意,请取消注释include 行并再次测试。然后,如果可行,请尝试使用实际的数据库查询等

<?php
    if( $_SERVER['REQUEST_METHOD']=='POST' ){
        if( !empty( $_POST['id'] ) ){
            /*

            # are these being included correctly?
            include '../common/config.php';
            include '../includes.php';
            include 'session.php';


            */


            # to emulate db query and results
            $id=filter_input( INPUT_POST, 'id', FILTER_SANITIZE_NUMBER_INT );
            $sql=sprintf( 'select * from user where user_id="%s"',$id );

            $payload=array(
                'about'         =>  'From db - all about user - based upon id '.$id,
                'assetgroup'    =>  'From db - which asset group',
                'skillgroup'    =>  'From db - which skill group',
                'skilllist'     =>  'from db - what skills',
                'address'       =>  'from db - address of tech'
            );
            $data = array(
                'recordsTotal'  =>  count( $payload ),
                'data'          =>  $payload,
                'sql'           =>  $sql
            );
            header( 'Content-Type: application/json' );
            exit( json_encode( $data ) );
        }
        exit('error');
    }
?>
<!DOCTYPE html>
<html lang='en'>
    <head>
        <meta charset='utf-8' />
        <title>basic jquery - error parsing response</title>
        <script src='//code.jquery.com/jquery-latest.js'></script>
        <script>
            document.addEventListener('DOMContentLoaded',()=>{

                const node=function(id){
                    return document.getElementById( id )
                };

                let val=303;

                $.ajax({  
                    type:'POST',  
                    url:location.href,  //techtest.php
                    dataType:'json',
                    data:{ id: val },
                    success:function( r ){
                        node('tech_about_me').innerHTML = r.data.about;
                        node('tech_assest_group').innerHTML = r.data.assetgroup;
                        node('tech_skill_group').innerHTML = r.data.skillgroup+" "+r.data.skilllist;
                        node('tech_address').innerHTML = r.data.address;

                        console.info( r.sql, r.recordsTotal )
                    },
                    error: function(e) { alert(e); }  
                });
            });
        </script>
    </head>
    <body>
        <div id='tech_about_me'></div>
        <div id='tech_assest_group'></div>
        <div id='tech_skill_group'></div>
        <div id='tech_address'></div>
    </body>
</html>

【讨论】:

  • 非常感谢。包含的文件之一有更多包含。可能有一些问题。
  • 好 - 很高兴你现在已经越过了那个小障碍。祝你好运
  • 是的。现在要解决 sql 注入的障碍。项目充满了它。 :D @RamRaider
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-19
  • 1970-01-01
  • 1970-01-01
  • 2020-12-20
  • 2016-09-04
相关资源
最近更新 更多