2015-11-05 96 views
0

我一直在寻找小时,似乎无法找到问题在我的代码中。我尝试过多种资源并搜索不同的网站。当点击“获取JSON数据”时,下面没有任何内容。有人可以看看代码,看看我哪里错了请。Jquery JSON不显示数据

非常感谢!

$(document).ready(function() { 
 

 
    $('#clickme').click(function(e) { 
 

 
    $.getJSON('data.json', function(data) { 
 

 
     var items = []; 
 

 
     $.each(data, function(key, val) { 
 

 
     items.push('<li id="' + key + '">' + val + '</li>'); 
 

 
     }); 
 

 
     $('<ul/>', { 
 
     'class': 'interest-list', 
 
     html: items.join('') 
 
     }).appendTo('#ajaxjson'); 
 

 

 

 
    }); 
 

 
    e.preventDefault(); 
 
    }); 
 

 
});
<!DOCTYPE HTML> 
 
<html> 
 

 
<head> 
 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
 
    <link rel="stylesheet" type="text/css" href="styles/reset.css"> 
 
    <link rel="stylesheet" type="text/css" href="styles/style.css"> 
 
    <link href='https://fonts.googleapis.com/css?family=Oswald' rel='stylesheet' type='text/css'> 
 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script> 
 
    <script src="scripts/hide_img.js"></script> 
 
    <script src="scripts/fadein_out.js"></script> 
 
    <script src="scripts/increaseTextSize.js"></script> 
 
    <script src="scripts/hideVideo.js"></script> 
 
    <script src="scripts/showVideo.js"></script> 
 
    <script src="scripts/ChangeHeader.js"></script> 
 
    <script src="scripts/eventHover.js"></script> 
 
    <script src="ajaxload.js"></script> 
 

 

 

 

 
    <link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/themes/smoothness/jquery-ui.css"> 
 
    <script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/jquery-ui.min.js"></script> 
 

 
    <script src="scripts/form_tooltip.js"></script> 
 

 
    <style> 
 
    .mma { 
 
     font-size: 75%; 
 
     color: ; 
 
    } 
 
    .important { 
 
     font-weight: bold; 
 
     font-size: 50px; 
 
    } 
 
    .blue { 
 
     color: blue; 
 
    } 
 
    </style> 
 

 
    <title>Mixed Martial Arts</title> 
 

 
</head> 
 

 
<body> 
 

 
    <header> 
 
    <div class="wrapper"> 
 
     <h1 id="headertext">Mixed Martial Arts<span class="color"></span></h1> 
 
     <nav> 
 
     <ul> 
 
      <li id="hideshowimg"><a href="#">Hide/Show Image</a> 
 
      </li> 
 
      <li id="increaseText"><a href="#">Increase Text</a> 
 
      </li> 
 
      <li id="showVideo"><a href="#">ShowVideo</a> 
 
      </li> 
 
      <li id="changecolor"><a href="#">Colour</a> 
 
      </li> 
 
     </ul> 
 
     </nav> 
 
    </div> 
 

 
    </div> 
 
    </header> 
 

 
    <div id="hero-image"> 
 
    <div class="wrapper"> 
 
     <a href="" class="button-1">Fade Out/In</a> 
 
    </div> 
 
    </div> 
 

 
    <div id="features"> 
 
    <div class="wrapper"> 
 
     <ul> 
 
     <li class="feature-1"> 
 
      <h4 class="feature1-heading">What is MMA</h4> 
 
      <p class="mma">MMA is a full-contact combat sport that allows for different techniques to grapple and strike their oppentent.</p> 
 
     </li> 
 
     <li class="feature-2"> 
 
      <h4>Common Disciplines</h4> 
 
      <a href="#" id="clickme">Get JSON Data</a> 
 
      <p id="ajaxjson"></p> 
 

 

 
      <li class="feature-3"> 
 
      <h4>Competitions</h4> 
 
      <p class="mma">There are many competitions that fighters can fight in such as Ultimate Fighting Championship (UFCPride, CageWars, Clan Wars and many more. MMA is the fastest growing sport today!</p> 
 
      </li> 
 
      <div class="clear"></div> 
 
     </ul> 
 
    </div> 
 
    </div> 
 

 
    <div id="primary-content"> 
 
    <div class="wrapper"> 
 
     <article> 
 
     <h3>What is MMA?</h3> 
 
     <a href="" class="button-video">Hide Video</a> 
 

 
     <iframe width="560" height="315" src="https://www.youtube.com/embed/PnUmcL07xnY" frameborder="0" allowfullscreen></iframe> 
 
     </article> 
 
    </div> 
 
    </div> 
 

 

 

 
    <div id="cta"> 
 
    <div class="wrapper"> 
 
     <h3>Contact Form!</h3> 
 
     <p> 
 
     <form> 
 
      First name: 
 
      <br> 
 
      <input id="txtName" title="Please input your firstname!" type="text" name="firstname"> 
 
      <br>Last name: 
 
      <br> 
 
      <input id="txtSurname" title="Please input your lastname!" type="text" name="lastname"> 
 
     </form> 
 
     </p> 
 
     <a href="#" class="button-2">Submit</a> 
 
    </div> 
 
    </div> 
 

 
    <footer> 
 
    <div class="wrapper"> 
 
     <div id="footer-info"> 
 
     <p>Copyright 2015 Diarmuid Bogner.</p> 
 
     </div> 
 

 
     <div class="clear"></div> 
 
    </div> 
 
    </footer> 
 

 
</body> 
 

 
</html>

{ 

    "one": "Judo", 
    "two": "Karate", 
    "three": "Boxing", 

} 
+0

能否请您发布仅适用HTML和更好地描述你的问题的确切性质?你的JavaScript控制台中是否有错误? HTTP AJAX请求发生了什么?你找回错误状态代码了吗? – thatidiotguy

+0

你的'click'处理程序在运行吗?你的'getJSON'回调是否运行?在[JS控制台]中是否有任何错误(http://webmasters.stackexchange.com/questions/8525/how-to-open-the-javascript-console-in-different-browsers)? – apsillers

回答

0

看到什么下文,确保AJAX请求返回你所期望的!

function DataCtrl($) { 
 
    var self = this; 
 
    
 
    self.btn = $('#btn'); 
 

 
    self.loadData = function(event) { 
 
    event.preventDefault(); 
 
    
 
    $ 
 
//  .getJSON('data.json') // we need to comment, ajax isn't available 
 
     .when({"one": "Judo", "two": "Karate", "three": "Boxing" }) // this is just a mock for the working example 
 
     .then(function(data) { 
 
     var listItems = []; 
 
     
 
     for(var i in data) { 
 
      if(!data.hasOwnProperty(i)) { continue; } 
 
      
 
      listItems.push('<li id="listItem-'+ i +'">'+ data[i] +'</li>'); 
 
     } 
 
     
 
     return listItems; 
 
     }) 
 
     .then(function(items) { 
 
     
 
     return $('<ul />', { 
 
      html: items 
 
     }); 
 
     }) 
 
     .then(function(list) { 
 
     return $('#result').append(list); 
 
     }) 
 
    ; 
 
    
 
    
 
    }; 
 
    
 
    self.btn.click(self.loadData.bind(self)); 
 
} 
 

 

 
jQuery(document).ready(DataCtrl);
#result { width: 100%; min-height: 10em; background: lightseagreen; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<button id="btn">Load Data</button> 
 
<div id="result"></div>

+0

嗨,这个显示什么,我需要它来显示,但我需要它从JSON文件中提取并显示此信息。由于div显示不正确,它也不得不放在div上。 –

+0

在我的代码段我已经评论了* .getJSON('data.json')*这一行,因为在stackoverflow中不可能执行xhr请求,所以,你必须**取消注释**该行,并且,下面的行:**。当({“一”:“柔道”,“二”:“空手道”,“三”:“拳击”})**仅用于这个例子,你必须使用未注释的前一个... – Hitmands