2015-04-25 21 views
5

Próbuję pobrać dane z mysql do php i zwrócić je w formacie json do kontrolera (kątowego).Błąd podczas tworzenia json w php

Podczas tworzenia json, niektóre niechciane ciągi są coraz dołączane, z powodu których otrzymuję błąd podczas przechodzenia json.

Poniżej mój kod php:

$json_response = array(); 

while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) { 
    $row_array["name"] = $row["name"]; 
    $row_array["quantity"] = $row["quantity"]; 
    array_push($json_response,$row_array); 
} 
echo json_encode($json_response); 

I następuje wyjście konsola po wydrukowaniu json (konsola jest w kontrolerze):

{itemData:{"data":[{"name":"item1","quantity":"10"},{"name":"item2","quantity":"20"},{"name":"item3","quantity":"25"}]  

<!-- Hosting24 Analytics Code --> 
<script type="text/javascript" src="http://stats.hosting24.com/count.php"></script> 
<!-- End Of Analytics Code --> 

}} 

powyżej wyróżnionej części nadchodzi w json , z powodu którego występuje błąd.

Proszę, pomóż mi rozwiązać problem.

+0

Jaki błąd dostałeś? – kratenko

+0

Czy mogę zaproponować, abyś przestał używać biblioteki mysql? Jest przestarzały. Przejdź do mysli lub lepiej do PDO. Dzięki temu Twój kod będzie jeszcze bezpieczniejszy! –

+0

Uważam, że ma to coś wspólnego z twoim hostem. Dołączony kod to skrypt do śledzenia, który wydaje się być tworzony przez twojego hosta. Uważam, że dodają go do każdego żądania z serwera. Spróbuj użyć 'exit();' po 'echo json_'. Jeśli to nie pomoże - spróbuj użyć innego hosta lub skontaktuj się z nim. –

Odpowiedz

4

Ok, Po trochę badań mogę potwierdził, że mój komentarz ma rację. Twój kod jest w porządku, a ciąg jsonów, który jest tworzony według kodu jest w porządku.

jednak niechciane dołączony łańcuch:

<!-- Hosting24 Analytics Code --> 
<script type="text/javascript" src="http://stats.hosting24.com/count.php"></script> 
<!-- End Of Analytics Code --> 

jest dołączany przez serwer. Uważam, że jest to darmowy serwer i dlatego pozwala sobie na wstrzyknięcie własnego kodu na swoją stronę. Mają mechanizm, który dołącza ten skrypt do każdego żądania, które jest robione z twojego serwera (włączając żądania ajaxowe).

Ponieważ ten kod jest dodawany przez serwer, wydaje się, że nic nie można zrobić w kodzie, aby go pokonać. Wydaje się, że jedyną opcją jest znalezienie innej firmy hostingowej lub płatnego planu.

Aktualizacja - Możesz spróbować użyć funkcji exit(); zaraz po wydrukowaniu ciągu jsonów. Może to przerwać zastrzyk gospodarza.

+0

Twoje rozwiązanie wydaje się być wiarygodne, ale wątpię, czy 'exit()' działa. Uważam, że skrypt PHP OP jest wykonywany w kontrolowanym środowisku i kiedy ten skrypt jest kończony, środowisko dodaje wiadomość do niego przed wysłaniem z powrotem do odpowiedzi HTTP. – KarelG

+0

Wielkie dzięki za informację ... zadziałało to dla mnie :) –

+0

@KarelG, sugeruję, że możliwe rozwiązanie oparte na innych komentarzach i dyskusjach, które znalazłem, inaczej bym o tym nie wspomniał. Oczywiście najlepszym rozwiązaniem byłoby uzyskanie płatnego planu hostingu od przyzwoitej firmy hostingowej. –

0

Gdzie $ conn jest twój mysqli obiekt połączenia: -

$query = "SELECT name, quantity FROM tablename"; 

    if ($result = mysqli_query($conn, $query)) 
    { 
     $out = array(); 

     while ($row = $result->fetch_assoc()) 
     { 
      $out[] = $row; 
     } 

     echo json_encode($out); 
     mysqli_free_result($result); 

    } 
0

Aby stworzyć swój JSON, możesz użyć małej biblioteki Simple JSON for PHP.

include('includes/json.php'); 

$Json = new json(); 

$Json->add('status', '200'); 
$Json->add('message', 'Success'); 
$Json->add("data",$json_response); 

$Json->send(); 
Powiązane problemy