2016-06-20 9 views
3
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 

Oben ist die Fehlerinfo des Codes.VM603: 1 Uncaught SyntaxError: Unerwarteter Token o in JSON an Position 1?

Ich möchte JSON-Objekt zu Array analysieren und das Array in das HTML rendern. Aber ich weiß nicht, wie ich damit umgehen soll?

Folgendes ist der Teil JS-Code von mir, Funktion von showTable (Daten) analysiert das JSON-Objekt in HTML table.function requestData() ist Anfrage-Informationen von der Rückseite.

(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); 
     }  
    })(); 

Antwort

2

In Ihrer Ajax-Anfrage sollten Sie den Datentyp als "html" angeben. Unter anderem: wenn Daten von der Funktion php json_encode() generiert werden.

$.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"); 
      } 
     }); 
5

hatte ich das gleiche Problem, wenn Ihre Antwort-Header application/json ist es bereits analysiert, Sie brauchen es nicht zu analysieren, mit:

var dataArray = $.parseJSON(data); 

Auch können Sie es mit jQuery.getJSON(): jQuery.getJSON()

Verwandte Themen