如何从html页面中的另一个URL访问json数据

时间:2017-04-11 23:53:54

标签: php jquery json

这是我的php代码,它将返回json数据类型

$sql="SELECT * FROM POST";
$result = mysqli_query($conn, $sql);
$sJSON = rJSONData($sql,$result);
echo $sJSON;


function rJSONData($sql,$result){
    $sJSON=array();
    while ($row = mysqli_fetch_assoc($result))
    {
        $sRow["id"]=$row["ID"];
        $sRow["fn"]=$row["posts"];
        $sRow["ln"]=$row["UsrNM"];
        $strJSON[] = $sRow;
    }
    echo json_encode($strJSON);
}

此代码将返回

 [{"id":"1","fn":"hi there","ln":"karan7303"},
 {"id":"2","fn":"Shshhsev","ln":"karan7303"},
 {"id":"3","fn":"karan is awesome","ln":"karan7303"},
 {"id":"4","fn":"1","ln":"karan7303"},
 {"id":"5","fn":"asdasdas","ln":"karan7303"}]

但是如何在html中访问这些数据,也就是说,我想要特定位置的特定数据,例如我想要显示' fn'在我的div和' ln'在另一个div与另一个id

在尝试任何其他事情之前我试过这个

$.ajaxSetup({ 
  url: 'exm1.php', 
  type: 'get', 
  dataType: 'json',
  success: function(data){
    console.log(data);          
  }
});

但它显示数据未定义我不知道我做错了什么

2 个答案:

答案 0 :(得分:0)

如果您将$.ajaxSetup(这是一种全局配置方法)与$.ajax交换,那么您应该工作。但是,您可以做出一些重大改进。

例如,你的PHP围绕rJSONData返回的值做了一些奇怪的事情。这是一些修复

function rJSONData($result) {
    $sJSON = array();
    while ($row = mysqli_fetch_assoc($result)) {
        $sJSON[] = array(
            'id' => $row['ID'],
            'fn' => $row['posts'],
            'ln' => $row['UsrNM']
        );
    }
    return json_encode($sJSON);
}

当你打电话时

header('Content-type: application/json');
echo rJSONData($result);
exit;

另外,请确保您没有通过echo / print或HTML输出任何其他数据,例如<html>

在JavaScript中,您可以使用

大大简化代码
$.getJSON('exm1.php', function(data) {
  console.info(data);
}).fail(function(jqXHR, textStatus, errorThrown) {
  console.error(jqXHR, textStatus, errorThrown);
});

答案 1 :(得分:-1)

使用$.ajax代替$.ajaxSetup功能。

以下是另一篇SO帖子how to keep running php part of index.php automatically?

的详细答案
<script>

$.ajax({
    // name of file to call
    url: 'fetch_latlon.php',

    // method used to call server-side code, this could be GET or POST
    type: 'GET'

    // Optional - parameters to pass to server-side code
    data: {
        key1: 'value1',
        key2: 'value2',
        key3: 'value3'
    },

   // return type of response from server-side code
   dataType: "json"

    // executes when AJAX call succeeds
    success: function(data) {
        // fetch lat/lon
        var lat = data.lat;
        var lon = data.lon;

        // show lat/lon in HTML
        $('#lat').text(lat);
        $('#lon').text(lon);
    },

    // executes when AJAX call fails
    error: function() {
        // TODO: do error handling here
        console.log('An error has occurred while fetching lat/lon.');
    }
});


</script>