【问题标题】:Use jquery to dynamically create a file path based on the id of a link users click使用jquery根据用户点击的链接id动态创建文件路径
【发布时间】:2015-04-21 21:17:19
【问题描述】:

我正在尝试通过单击多个链接来构建特定 json 文件的动态路径。这是餐厅菜单。当用户单击链接时,我希望将 json 数据返回到 div 中的 html 中。我有这部分工作,但是当我尝试更改 json 文件的路径时,出现 404 错误,blank.json 文件不存在。这是我的代码:

$( document ).ready(function() {
$('.linki').click(function(){
  var gJsn = this.id;
  $.getJSON( 'json/'+gJsn+'.json', function( data ) {
  var items = [];
  $.each( data, function( key, val ) {
    items.push( "<li id='" + key + "'>" + val + "</li>" );
    console.log(key + ' ' + val + ' ' + gJsn);
  });

  $( "<ul/>", {
    "class": "my-new-list",
    html: items.join( "" )
  }).appendTo( ".menuHere" );
});
});
});

具体问题出在第四行:

$.getJSON( 'json/'+gJsn+'.json', function( data ) {

获取具有特定路径的 json 文件就可以了:

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

那我做错了什么?我认为this.id 可以正常工作。提前感谢您的帮助!

这是我的导航菜单代码:

<nav>
  <ul  class="nav">
    <li id="soup" class="menu-item menu-item-21"><a href="#soup" class="linki">Soup</a></li>
    <li id="appetizers" class="menu-item menu-item-26"><a href="#appetizers" class="linki">Appetizers</a></li>
    <li id="menu-item-25" class="menu-item menu-item-25"><a href="#events" class="linki">Family Style Dinners</a></li>
    <li id="menu-item-29" class="menu-item menu-item-29"><a href="#suppliers" class="linki">Mu-Shu</a></li>
    <li id="menu-item-231" class="menu-item menu-item-231"><a href="#andy-hilton" class="linki" class="linki">Fried Rice</a></li>
    <li id="menu-item-231" class="menu-item menu-item-231"><a href="#andy-hilton" class="linki" class="linki">Chow Mein</a></li>
    <li id="menu-item-231" class="menu-item menu-item-231"><a href="#andy-hilton" class="linki" class="linki">Pan Fried Noodle</a></li>
    <li id="menu-item-231" class="menu-item menu-item-231"><a href="#andy-hilton" class="linki" class="linki">Chow Fun</a></li>
    <li id="menu-item-231" class="menu-item menu-item-231"><a href="#andy-hilton" class="linki" class="linki">Drinks</a></li>
    <li id="menu-item-231" class="menu-item menu-item-231"><a href="#andy-hilton" class="linki">Egg Fu Yung</a></li>
    <li id="menu-item-231" class="menu-item menu-item-231"><a href="#andy-hilton" class="linki">Sizzling Entree</a></li>
    <li id="menu-item-231" class="menu-item menu-item-231"><a href="#andy-hilton" class="linki">Vegetable Entree</a></li>
    <li id="menu-item-231" class="menu-item menu-item-231"><a href="#andy-hilton" class="linki">Pork Entree</a></li>
    <li id="menu-item-231" class="menu-item menu-item-231"><a href="#andy-hilton" class="linki">Prawn Entree</a></li>
    <li id="menu-item-231" class="menu-item menu-item-231"><a href="#andy-hilton" class="linki">Lunch Specials</a></li>
    <li id="menu-item-231" class="menu-item menu-item-231"><a href="#andy-hilton" class="linki">Chef's Specials</a></li>
    <li id="menu-item-231" class="menu-item menu-item-231"><a href="#andy-hilton" class="linki">Chicken Entree</a></li>
    <li id="menu-item-231" class="menu-item menu-item-231"><a href="#andy-hilton" class="linki">Beef Entree</a></li>
  </ul>
</nav>

另外,我想确定的一项是如何删除以前的 json 数据并在单击一项时加载新的数据?我是不是走错了路?

【问题讨论】:

  • 我的猜测是 linki 类的元素没有你所期望的想法。
  • 确实如此:&lt;li id="soup" class="menu-item menu-item-21"&gt;&lt;a href="#soup" class="linki"&gt;Soup&lt;/a&gt;&lt;/li&gt; 谢谢,我将编辑以显示我的导航菜单:
  • li id 是“soup”,但您的 josn 文件有“soups”
  • @AtlanteAvila,现在就试试吧。我做了一个更正。
  • 您好 JAG 感谢您的回复,但这也不是问题所在。我得到的错误是 404:GET http://localhost:9000/json/.json 404 (Not Found) 我确实解决了你指出的问题......谢谢!

标签: javascript jquery html json


【解决方案1】:

改变

var gJsn = this.id;

var gJsn = $(this).closest('.menu-item').attr('id');

【讨论】:

  • 嗨 AmmarCSE,感谢您的帖子,我尝试了您的代码并得到另一个 404:GET http://localhost:9000/json/undefined.json 404 (Not Found)。有什么想法吗?
  • 感谢@AmmarCSE 做到了!知道如何在单击项目时删除旧数据并加载新数据以便只出现一组菜单项吗?谢谢!
  • @AtlanteAvila,我不确定你的意思。如果这是一个不同的问题,您应该提出一个新问题。很高兴我能提供帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-13
  • 1970-01-01
  • 1970-01-01
  • 2019-01-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多