快捷搜索:   nginx

jQuery ajax读取json文件的方法示例代码

笨牛网在进行站长工具开发的过程中遇到需要使用jQuery ajax读取json文件的问题,我们在对淘宝IP库返回的JSON数据进行处理的时候需要用到AJAX来加快加载速度。因此有了这个项目

我们通过JQuery来读取服务器上一个PHP文件返回的JSON信息,并循环处理显示出来


其中PHP文件是对访客IP进行识别,并调用淘宝IP库接口判断归属地,因为我们服务器在美国,服务器访问淘宝IP库速度有点慢,因此如果直接用PHP代码输出,可能页面打开会比较慢,因此需要用到AJAX请求并输出的方法


PHP文件如下:

<?php
$ipzhenshi = get_real_ip();
?>
<?php
function get_real_ip(){
    if(getenv('HTTP_CLIENT_IP') && strcasecmp(getenv('HTTP_CLIENT_IP'), 'unknown'))
    {$ip = getenv('HTTP_CLIENT_IP');}
    elseif(getenv('HTTP_X_FORWARDED_FOR') && strcasecmp(getenv('HTTP_X_FORWARDED_FOR'), 'unknown'))
    {$ip = getenv('HTTP_X_FORWARDED_FOR');}
    elseif(getenv('REMOTE_ADDR') && strcasecmp(getenv('REMOTE_ADDR'), 'unknown'))
    {$ip = getenv('REMOTE_ADDR');}
    elseif(isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], 'unknown'))
    {$ip = $_SERVER['REMOTE_ADDR'];}
    return preg_match("/[\d\.]{7,15}/", $ip, $matches) ? $matches[0] : false;
}
?>
<?php
    $ip = $ipzhenshi;            //获取IP
    //通过淘宝IP接口查询IP归属地
    $get_ipquery = "http://ip.taobao.com//service/getIpInfo.php?ip=$ip";
 
    //CURL
    $ch = curl_init();
    curl_setopt($ch,CURLOPT_URL,$get_ipquery);
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
    curl_setopt($ch,CURLOPT_HEADER,0);
 
    $content = curl_exec($ch);
 
    curl_close($ch);
 
 
    echo $content;
?>

输出的JSON格式如下:

{"code":0,"data":{"country":"\u4e2d\u56fd","country_id":"CN","area":"\u534e\u4e1c","area_id":"300000","region":"\u798f\u5efa\u7701","region_id":"350000","city":"\u53a6\u95e8\u5e02","city_id":"350200","county":"","county_id":"-1","isp":"\u7535\u4fe1","isp_id":"100017","ip":"120.41.124.11"}}


只要将这个JSON取值出来就能实现需要的效果

因此用这个案例来讲解jQuery ajax读取json文件的方法



我们主要用到三种

1、ajax获取json数据并直接显示的实现代码

<script src = "https://lib.sinaapp.com/js/jquery/1.7.2/jquery.min.js"></script>
<div id="ok"></div>

<script>
$(function () {
    $.ajax({
      type: "POST",
      dataType: "json",
      url: "./ip-query.php",
      success: function (result) {
        var str = "";
                $.each(result,function(index,obj){                
                str = "国家:" + obj["country"] + "<br>";    
                str += "省份:" + obj["region"] + "<br>";        
                str += "城市:" + obj["city"] + "<br>";                        
                });
        $("#ok").append(str);
      }
    });
});
</script>




2、$.getJSON获取json数据并直接显示的实现代码

<script src = "https://lib.sinaapp.com/js/jquery/1.7.2/jquery.min.js"></script>
<div id="ok"></div>

<script>
$(function(){
$.getJSON("./ip-query.php",function(data){
var $jsontip = $("#ok");
var strHtml = "";//存储数据的变量
$jsontip.empty();//清空内容

$.each(data,function(infoIndex,info){
strHtml += "IP:" + info["ip"];
        strHtml = "国家:" + info["country"];
        strHtml += "城市:" + info["city"];
        strHtml += "省份:" + info["region"] + "<br>";
        strHtml += "<hr>"
})
$jsontip.html(strHtml);//显示处理后的数据
})
})
</script>





3、点击按钮后才读入JSON数据

<script src = "https://lib.sinaapp.com/js/jquery/1.7.2/jquery.min.js"></script>
<script type = "text/javascript" > 
$(function (){
  $("#btn").click(function ()  {
    $.getJSON("./ip-query.php", function (data){
      var $jsontip = $("#jsonTip");
      var strHtml = "123";
      //存储数据的变量 
      $jsontip.empty();
      //清空内容 
      $.each(data, function (infoIndex, info){
        strHtml = "国家:" + info["country"];
        strHtml += "城市:" + info["city"];
        strHtml += "省份:" + info["region"] + "<br>";
        strHtml += "<hr>"
      }) 
      $jsontip.html(strHtml);
      //显示处理后的数据 
    }) 
  }) 
})
</script> 
</head> 
<body> 
<div id="divframe"> 
<div class="loadTitle"> 
<input type="button" value="获取数据" id="btn"/> 
</div> 
<div id="jsonTip"> 
</div> 
</div>


顶(2)
踩(0)

您可能还会对下面的文章感兴趣:

最新评论