2016-06-20 20 views
6

Tôi muốn trả lại dữ liệu json nhưng mã của tôi không hoạt động. Tôi không nhận được bất kỳ thông báo lỗi nào. Tôi có index.php, ajax.php và db.php. Db.php đang hoạt động. Nhưng mã ajax của tôi không hoạt động. Sai lầm của tôi đâu rồi?Trả lại dữ liệu json bằng php

index.php:

<!DOCTYPE html> 
<html> 
<head> 
<script type="text/javascript" src="http://code.jquery.com/jquery.min.js"></script> 
</head> 
<body> 
    <div id="test" style="width:500px;height:400px; margin:20px auto;"></div> 
<script> 
    $(window).load(function() { 
     $.ajax({ 
      dataType: "json", 
      url: 'ajax.php', 
      success:function(data){   
       $("#test").html(data); 
      } 
     }); 
    }); 
</script> 
</body> 
</html>  

Ajax.php:

<?php 
require 'db.php'; 
$query="select lat,lng from locations order by id"; 
$result = pg_query($link, $query); 
if (!$result) { 
echo "An error occurred_xxx.\n"; 
}else { 
$arr = pg_fetch_all($result); 
echo json_encode($arr); 
} ?> 
+2

Liệu nhà phát triển giao diện điều khiển chương trình bất kỳ lỗi nào? Bạn có thể hiển thị đầu ra của yêu cầu AJAX trong bảng điều khiển mạng không? –

+0

Tôi được điều hướng đến http: //localhost/php/index.php ngay bây giờ. –

Trả lời

6

Nếu bạn đang mong JSON bạn cần phải gửi nó bất kể. Những gì bạn đang làm khi lỗi tập lệnh của bạn, đang gửi text/html. Hãy thử điều này:

header("Content-Type: application/json"); 
require 'db.php'; 
$query="select lat,lng from locations order by id"; 
$result = pg_query($link, $query); 
$response = array(); 
if (!$result) { 
    $response = array(
     'status' => false, 
     'message' => 'An error occured...' 
    ); 
}else { 
    $response = array(
     'status' => true, 
     'message' => 'Success', 
     'data' => ph_fetch_all($result) 
    ); 
} 

echo json_encode($response); 

Bây giờ như bạn sẽ thấy, chúng tôi gửi JSON thực tế, bằng cách thiết lập một đúng Content-Type header và không pha trộn văn bản đơn giản và json lên.

Xử lý phản ứng này trong jQuery của bạn, chỉ cần điều kiện phản ứng:

$(window).load(function() { 
    $.ajax({ 
     dataType: "json", 
     url: 'ajax.php', 
     success:function(data){   
      if(!data.status) { 
       $("#test").html("ERROR: " + data.message); 
      } else if(data.status) { 
       $("#test").html(data); 
      } 
     } 
    }); 
}); 
+0

cảm ơn bạn rất nhiều. –

+0

Tôi đã thử ví dụ này tôi đã nhận json_decode() hy vọng tham số 1 là chuỗi, mảng được đưa ra trong những gì không có nghĩa là gì? –

+0

@ FatihDoğan xin lỗi, nó đáng lẽ phải là 'json_encode()'. – Darren

Các vấn đề liên quan