2017-04-20 86 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

是的,我做了它是完全空白,當我嘗試它另一個是我之前說過的錯誤,雖然我確實注意到一些不同的東西,當我試圖推動陣列第一項是重複的,我發現很奇怪 –