2015-04-25 13 views
5

Tôi đang cố tìm nạp dữ liệu từ mysql vào php và trả về định dạng json thành bộ điều khiển (góc).Lỗi khi tạo json trong php

Trong khi tạo json, một số chuỗi không mong muốn sẽ được thêm vào vì tôi gặp lỗi trong khi truyền tải json.

Tiếp theo là mã php của tôi:

$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); 

Và đây là giao diện điều khiển đầu ra sau khi in json (console là trong điều khiển):

{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 --> 

}} 

Phía trên phần tô đậm đang đến trong json , do lỗi xảy ra.

Vui lòng giúp tôi giải quyết vấn đề.

+0

Bạn gặp phải lỗi gì? – kratenko

+0

Tôi có thể đề xuất bạn ngừng sử dụng thư viện mysql không? Nó không được chấp nhận. Di chuyển đến mysli hoặc tốt hơn để PDO. Điều này sẽ làm cho mã của bạn thậm chí còn an toàn hơn! –

+0

Tôi tin rằng đó là một cái gì đó để làm với máy chủ của bạn. Mã được nối thêm là một tập lệnh để theo dõi có vẻ như được tạo bởi máy chủ lưu trữ của bạn. Tôi tin rằng họ thêm nó vào mọi yêu cầu từ máy chủ. Hãy thử sử dụng 'exit();' sau 'echo json_'. Trong trường hợp đó không giúp đỡ - hãy thử sử dụng một máy chủ khác hoặc liên hệ với họ. –

Trả lời

4

Ok, Sau khi có một nghiên cứu nhỏ, tôi có thể khẳng định rằng bình luận của tôi là đúng. Mã của bạn tốt và chuỗi json đang được tạo bằng mã của bạn là không sao.

Tuy nhiên, mong muốn nối chuỗi:

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

là được nối bởi máy chủ của bạn. Tôi tin rằng đó là một máy chủ miễn phí và do đó họ cho phép mình tự chèn mã riêng của họ vào trang web của bạn. Họ có một cơ chế nối thêm tập lệnh đó vào mọi yêu cầu đang được thực hiện từ máy chủ của bạn (bao gồm các yêu cầu ajax).

Vì mã này đang được máy chủ thêm vào, có vẻ như bạn không thể làm gì trong mã của mình để khắc phục nó. Có vẻ như lựa chọn duy nhất là tìm một công ty lưu trữ khác hoặc có kế hoạch trả tiền.

Cập nhật - Bạn có thể thử và sử dụng chức năng exit(); ngay sau khi in chuỗi json. Nó có thể phá vỡ tiêm của máy chủ.

+0

giải pháp của bạn có vẻ hợp lý, nhưng tôi nghi ngờ rằng 'exit()' hoạt động. Tôi tin rằng kịch bản PHP của OP đang được thực hiện trong một môi trường được kiểm soát và khi kịch bản đó được chấm dứt, môi trường sẽ thêm thông báo vào nó trước khi gửi nó trở lại phản hồi HTTP. – KarelG

+0

Cảm ơn rất nhiều thông tin ... nó đã làm việc cho tôi :) –

+0

@KarelG, tôi đề xuất giải pháp có thể dựa trên các nhận xét và thảo luận khác mà tôi đã tìm thấy, nếu không tôi sẽ không đề cập đến nó. Tất nhiên là giải pháp tốt nhất sẽ là để có được một kế hoạch lưu trữ trả tiền từ một công ty lưu trữ phong nha. –

0

đâu $ conn là đối tượng kết nối mysqli của bạn: -

$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

Để giả mạo JSON của bạn, bạn có thể sử dụng thư viện nhỏ 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();