2016-11-18 5 views
-2

Я создаю диаграмму Google, используя данные MYSQL через PHP. Ниже приведена часть jQuery.php JSON to JQuery

$.ajax({ 
     method: 'GET', 
     //dataType: 'JSON', 
     url: "/php/abc.php", 
     success: function (data1) { 
      var data = new google.visualization.DataTable(); 

      // Add legends with data type 
      data.addColumn('string', 'type'); 
      data.addColumn('number', 'value'); 
      //Parse data into Json 
      var jsonData = $.parseJSON(data1); 
      //var jsonData = (data1); 
      for (var i = 0; i < jsonData.length; i++) { 
       alert (jsonData[i].length); 
       alert (jsonData[i].type); 
       data.addRow([jsonData[i].type, parseInt(jsonData[i].value)]); 
      } 

Я получаю ниже выхода из PHP, когда я проверить прямую страницу PHP в браузере

{"type":"New_Userstory","value":"10"}{"type":"Active_Userstory","value":"20"}{"type":"Resolved_Userstory","value":"30"}{"type":"Closed_Userstory","value":"40"} 

но через JSON он не показывает ничего, говорит неправильный символ «{». Когда я использовал заголовок ('Content-Type: application/json'); или dataType: 'JSON', этот eror ушел, но результат "undefined" каким-либо другим способом получить этот JSON?

+1

Это недействительно JSON, исходящий из вашего PHP. Покажите свой PHP-код. (Обратите внимание: вы не можете просто эхо json_encode несколько раз и ожидать, что он будет работать.) –

+0

$ this-> temp_sql_display = "SELECT * FROM SalesSummary"; \t \t \t \t \t \t попробовать { \t \t \t \t \t \t \t \t $ результат = $ this-> hookup-> запрос ($ this-> temp_sql_display); \t \t \t \t в то время как ($ строка = $ result-> FETCH_ASSOC()) { \t \t \t \t \t $ этом-> = json_encode JSON ($ строка); \t \t \t \t echo $ this-> json; \t \t \t \t} \t \t \t \t \t \t} –

+2

Да, это не будет работать. Вам нужно сгенерировать массив в цикле, затем после цикла json_encode массива. –

ответ

3

Это неправильный выход JSON.

{"type":"New_Userstory","value":"10"}{"type":"Active_Userstory","value":"20"}{"type":"Resolved_Userstory","value":"30"}{"type":"Closed_Userstory","value":"40"} 

Правильный выход JSON будет

[ 
    { 
    "type": "New_Userstory", 
    "value": "10" 
    }, 
    { 
    "type": "Active_Userstory", 
    "value": "20" 
    }, 
    { 
    "type": "Resolved_Userstory", 
    "value": "30" 
    }, 
    { 
    "type": "Closed_Userstory", 
    "value": "40" 
    } 
] 

Согласно вашему PHP код, вот что вам нужно изменить.

$this->temp_sql_display = "SELECT * FROM SalesSummary"; 
try { 
    $result = $this->hookup->query($this->temp_sql_display); 
    while ($row = $result->fetch_assoc()) 
    { 
     $this->json[] = $row; 
    }  
    echo json_encode($this->json); 
} 
+0

Спасибо @Samay, как я могу получить это из выборки данных MySQL. Я разделил код извлечения MYSQL в приведенном выше комментарии. –

+0

Вам нужно создать массив при запуске цикла while. Попробуйте сделать это $ this-> json [] = $ row; внутри цикла while и переместить echo json_encode ($ this-> join) после цикла while. – Samay

+0

@Samay У этой проблемы будет такая же проблема. Вы не хотите кодировать json внутри цикла, вы хотите сгенерировать массив, а затем json encode. (Изменить: как показывает ваше последнее обновление) –