Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何基于所选值加载JSON数据_Javascript_Arrays_Json - Fatal编程技术网

Javascript 如何基于所选值加载JSON数据

Javascript 如何基于所选值加载JSON数据,javascript,arrays,json,Javascript,Arrays,Json,我是新手,不知道自己做错了什么 在我的json文件中,我有几行代码,但我只需要记录请求的代码 <a href="#" id="get-data" data-id="100" data-foo="100">Get JSON data</a> <script src="http://code.jquery.com/jquery-1.9.1.min.js"></script> <script> $('#get-data

我是新手,不知道自己做错了什么

在我的json文件中,我有几行代码,但我只需要记录请求的代码

<a href="#" id="get-data" data-id="100" data-foo="100">Get JSON data</a>

<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>


  <script>

      $('#get-data').click(function () {

          var myDiv = document.querySelector('#get-data');

          var mySetValue = myDiv.dataset.foo


          console.log (mySetValue)
          var showData = $('#show-data');
          var url = 'example.json';
          var data = {
              value: mySetValue
          };
          $.getJSON(url, data) 
            console.log(data);
      });


  </script>
我只需要加载与按钮的数据foo相关联的数据,但我只得到一个值作为返回

我做错了什么


提前感谢

我注意到您正在使用Jquery作为API,在Jquery中有一个ajax函数,您可以使用它来帮助从ajax文件/响应中获取信息

阅读更多关于

您的代码将产生如下结果

$.ajax({

    url: '/file.json',          
    success: function(data){ 

        console.log(data);

    }
});

可能发生的问题

  • 如果您不是在PHP服务器上运行此文件,或者没有“”权限,HTML/PHP将不会授予您打开“外部文件”的权限

  • Ajax是一个异步函数,这意味着如果在内部分配一个X值,它将仅在外部结构完成其执行时分配该值。。。简言之,它首先执行ajax外部的内容,然后执行内部的内容,使用和可以解决这个问题

  • 要使用承诺进行等待,必须有一个异步函数的“main”函数,否则该函数将不接受等待条件

    解决异步问题

    async function main(){
    
        var result = await getAssycFunction();
    
        console.log(result);
    
    }
    
    function getAssycFunction(){
    
        return new Promise((result, reject) =>{
    
            result("Result");
    
        });
    
    }
    
    正如你在评论中问我的那样,要分离这些值,没有“神奇的函数”,但可以做的是一个循环,它穿过所有的房子,在第二个数组中只分离你想要的那些房子

    var values = [];
    
    for (var i = 0; i < data.length ; i++) {
    
        if (data[i]['value'] == 100) {
    
            values.push(data[i]);
        }
    
    }
    
    result(values);
    
    var值=[];
    对于(变量i=0;i

    一个小提示:在分离变量时,不想对最终用户隐藏信息,一旦您有一个Ajax请求,用户就可以访问Ajax文件以便能够读取。

    作为回调缺少处理程序?异步问题?您知道
    $.getJSON(url,数据)
    进行异步调用吗?谢谢您的回复。我可以使用json或ajax获取整个文件,但我只想从文件中提取值为100的数据。不是全部。当Jquery返回一个
    数据时,它恢复一个对象,可以从该对象中选择项目,如果它返回一个数组,请稍候,我正在编辑这个,以获得一个更完整的答案,可以帮助您。抱歉,有点大,但我认为这应该能回答你的问题。难道没有其他方法来解决这个问题吗?我的意思是,我试图从json文件中选择某些数据。最好的方法是什么?
    
    var values = [];
    
    for (var i = 0; i < data.length ; i++) {
    
        if (data[i]['value'] == 100) {
    
            values.push(data[i]);
        }
    
    }
    
    result(values);