为什么我通过点(。)运算符访问json属性,同时通过$ .getjson()传递var

问题描述 投票:3回答:2

我有一个$ getJSON(),我想传递一个var,我总是在控制台日志中得到未定义。

我之前做过这件事我似乎无法弄清楚为什么这不起作用。

任何帮助,将不胜感激。

这是我的榜样

{
    "harry": {
        "example": "test",
        "example1": "test",
    }
    "james": {
        "example": "test",
        "example1": "test",
    }
    "ben": {
        "example": "test",
        "example1": "test",
    }
}

  var usersidno = $("#hiddenid").html();
  $.getJSON(
  "http://localhost/example/file.json",
  function(json) {
  console.log(json.usersidno);
  });
<div id="hiddenid">harry</div>
javascript jquery json
2个回答
3
投票

如果要动态(使用变量或表达式)访问对象的(JSON)属性,则应使用方括号表示法。

[your expression or variable inside square brackets]。即,json[useridno]

 var usersidno = $("#hiddenid").html();
 $.getJSON(
   "http://localhost/example/file.json",
   function(json) {
      console.log(json[usersidno]); // try to use square brackets
   });

0
投票

这是一个工作示例,您的问题我使用了api,它返回了一个json,您可以使用[] annotatiton来访问对象属性。

$(document).ready(function(){

var user = $("#hiddenid").html()
console.log(typeof user)

 $.getJSON(
  "https://jsonplaceholder.typicode.com/todos/1",
  function(json) {
  let js=JSON.parse(JSON.stringify(json))
 console.log(js[user]);
  console.log(js.user);//undefined
  console.log(js)
 
  });

});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="hiddenid">userId</div>

说明:

var userid = 'userId';
console.log(x.userid); // it looks for x.userid, which throws undefined,if it does'nt exists
console.log(x[userid]); // looks for x['userId'] which it will find

看看mdn docs

© www.soinside.com 2019 - 2024. All rights reserved.