web-dev-qa-db-fra.com

VM603: 1 SyntaxError Uncaught: jeton inattendu o dans JSON à la position 1?

n.parseJSON @   jquery-1.12.3.min.js:4
showTable   @   query.html:107
success @   query.html:98
i   @   jquery-1.12.3.min.js:2
fireWith    @   jquery-1.12.3.min.js:2
y   @   jquery-1.12.3.min.js:4
c   @   jquery-1.12.3.min.js:4

Ci-dessus, les informations d'erreur du code.

Je souhaite analyser un objet JSON dans un tableau et le rendre au format HTML. Mais je ne sais pas comment le gérer par la suite?

Voici la partie du code js, la fonction showTable (data) analyse l’objet json en HTML table.function requestData () est la demande de renseignements de l’arrière.

 (function(){
        var form = $("form");
        var contentCenter = $(".content-center");
        $(".s-btn").on("click",function(event){
            $(".container").css({
                "position":"relative"
            })
            form.css({
                "position":"absolute",
                "left":"15px",
                "top":"0px"                 
            });
            contentCenter.css({
                "position":"absolute",
                "top":"-12px"   
            })

            event.preventDefault();
            requestData();
        });

        //与后台交互数据
        function requestData(){                                 

            var data = {
                type : $("#form_control").val(),
                keywords : $.trim($("#ipt_control").val())
            };
            $.ajax({
                type : "GET",
                url : "data/data.json",
                dataType : "json",
                data : data,                    
                success:function(msg){
                    //TODO请求成功后跳转页面
                    //处理后台返回的数据
                    console.log(msg);
                    showTable(msg);
                },
                error:function(msg){
                    console.log("failed");
                }
            }); 
        }   
        //获取json数据,动态创建表格
        function showTable(data){
            var dataArray = $.parseJSON(data);
            console.log(dataArray);
            var tableStr="<table class='table table-bordered'>"
            tableStr = tableStr + "<thead><td>id</td><td>name</td>handle<td></td>"
            var len = dataArray.length;
            for(var i=0;i<len;i++){
                tableStr = tableStr + "<tr><td>" + dataArray[i].id + "</td>" + "<td>" + dataArray[i].name + "</td>" + "<td>" + dataArray[i].handle + "</td></tr>";
            }
            tableStr = tableStr + "</table>"
            $("#dataType").html(tableStr);
        }       
    })();
5
Joe.Herylee

J'ai eu ce même problème, si votre en-tête de réponse est application/json, il est déjà analysé, vous n'avez pas besoin de l'analyser avec:

var dataArray = $.parseJSON(data);

Vous pouvez aussi l'obtenir avec jQuery.getJSON(): jQuery.getJSON ()

8
Danielle Davis

Dans votre demande ajax, vous devez spécifier le type de données "html". Entre autres: lorsque les données sont générées par la fonction php json_encode ().

 $.ajax({
            type : "GET",
            url : "data/data.json",
            dataType : "html",
            data : data,                    
            success:function(msg){
                console.log(msg);
                var array_return =  $.parseJSON ( msg );
            },
            error:function(msg){
                console.log("failed");
            }
        }); 
2
Stéphane Molano