2017-04-20 101 views
1

你好,我想解析从我的数据库到我的HTML视图的数据结果。我不太清楚我在做什么。无法解析JSON编码的值从PHP到JSON解析在JavaScript中/ jquery

这里是我的代码:

function display($dbhandler){ 

$sql = "SELECT * FROM users"; 
    foreach($dbhandler->query($sql) as $row){ 
     $data = array('id'=>$row['id'], 
         'email'=> $row['email'], 
         'name'=> $row['name'] 
         ); 

     echo json_encode($data);   

    } 

} 

这会给我的输出:

{"id":"1","email":"Email 1","name":"Name 1"}{"id":"2","email":"Email 2","name":"Name 2"}'

现在,当我返回并尝试使用$ .parseJSON(结果)解析它jQuery的。

function display_list(){ 
 

 
\t \t action='select'; 
 
\t \t 
 
\t \t $.ajax({ 
 
\t \t \t type:"POST", 
 
\t \t \t url:"options.php", 
 
\t \t \t data:{ action : action }, 
 
\t \t \t success: function(res){ 
 
\t \t \t \t console.log(res) 
 
\t \t \t \t results = $.parseJSON(res); 
 
\t \t \t \t console.log(results); 
 
\t \t \t } 
 
\t \t }); 
 
\t }

我得到这个错误:

Uncaught SyntaxError: Unexpected token { in JSON at position 66 at Function.parse [as parseJSON]() at Object.success (actions.js:16) at i (jquery-3.1.1.min.js:2) at Object.fireWith [as resolveWith] (jquery-3.1.1.min.js:2) at A (jquery-3.1.1.min.js:4) at XMLHttpRequest. (jquery-3.1.1.min.js:4)

这有什么错我试图传递数据?欢迎任何建议,谢谢。

+0

的JSON返回无效,尝试张贴本网站上的JSON http://jsonlint.com/ ,看到你产生JSON是无效 – ianace

回答

0

原来问题出现在脚本的服务器端,所以我根据您的建议修改了我的代码,这就是我为我工作的目标。

function display($dbhandler){ 

    $sql = "SELECT * FROM users"; 
    $result = array(); 
    foreach($dbhandler->query($sql) as $row){ 
     $data = array('id'=>$row['id'], 
         'email'=> $row['email'], 
         'name'=> $row['name'] 
         ); 

     array_push($result,$data);  

    } 

    echo json_encode($result); 

} 
1

更改以下行:

echo json_encode()($data); 

echo json_encode($data); 

并从循环这条线,把循环结束之后。并作出以下修改:

success: function(res){ 
    var data = JSON.parse(res); 
    alert(data[0].name); 
} 
+0

还是同样的错误 –

+0

检查更新的答案 –

+0

我不太明白你能否提供摘录,以便我可以基于什么变化? –

0

试试这个

function display($dbhandler){ 

$sql = "SELECT * FROM users"; 
    foreach($dbhandler->query($sql) as $row){ 
     $data[] = array('id'=>$row['id'], 
         'email'=> $row['email'], 
         'name'=> $row['name'] 
         ); 



    } 
    echo json_encode($data);   
} 

我刚才添加的[]括号后您的$data 这相当于array_push 看到php arr_push()

+0

仍然是相同的错误,我认为数据已经是一个数组,当我使用print_r它表明它是 –

+0

什么是输出json使用上述更改?因为你上面有什么会产生无效的json,请参阅我对你的问题的评论 – ianace

+1

你是对的,从服务器端传递数据的方式有问题我发现什么是错误的,现在它的工作原理 –

0
function display($dbhandler){ 
$sql = "SELECT * FROM users"; 
$data = array(); 
    foreach($dbhandler->query($sql) as $row){ 
     $data[] = array('id'=>$row['id'], 
         'email'=> $row['email'], 
         'name'=> $row['name'] 
         ); 
    } 
echo json_encode($data);  
     } 

jQuery的功能:

function display_list(){ 

     action='select'; 

     $.ajax({ 
      type:"POST", 
      url:"options.php", 
      dataType: 'json', 
      data:{ action : action }, 
      success: function(json){ 
       console.log(json) 

      } 
     }); 
    } 
+0

错误消失了,但它没有显示任何输出 –

+0

您是否尝试检查Ajax调用的响应并检查控制台栏。请分享结果。 – Zaman

+0

是的,我做了它是完全空白,当我尝试它另一个是我之前说过的错误,虽然我确实注意到一些不同的东西,当我试图推动阵列第一项是重复的,我发现很奇怪 –