Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.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中读取页面加载中的值?_Javascript_Jquery - Fatal编程技术网

如何在JavaScript中读取页面加载中的值?

如何在JavaScript中读取页面加载中的值?,javascript,jquery,Javascript,Jquery,我有一个名为下拉式语言的API,它返回如下内容: { "res": [ { "enabled": 0, "flag": "gr" }, { "enabled": 1, "flag": "us" } ] } 如何获取页面加载上的两个元素并将它们存储在两个全局变量中,例如: var one = { "enabled": 0 , "flag": "gr" } var two = { "enabled": 1

我有一个名为
下拉式语言
的API,它返回如下内容:

{
  "res": [
    {
      "enabled": 0, 
      "flag": "gr"
    }, 
    {
      "enabled": 1, 
      "flag": "us"
    }
  ]
}
如何获取页面加载上的两个元素并将它们存储在两个全局变量中,例如:

var one = { "enabled": 0 , "flag": "gr" }
var two = { "enabled": 1 , "flag": "us" }
这样我就可以在同一个html页面的其他部分使用它了?这就是我到目前为止所做的:

<script type="text/javascript">
$.ajax({
  url: "dropdown-language",
  success : function(data) {
    obj = JSON.parse(data);
    alert(obj);
  },
  async:false
});
</script>

$.ajax({
url:“下拉语言”,
成功:功能(数据){
obj=JSON.parse(数据);
警报(obj);
},
异步:false
});

在ajax请求之前声明两个全局变量,并在成功回调中实例化它们

var one, two;

$.ajax({
    url: "dropdown-language",
    success: function (data) {
        obj = JSON.parse(data);
        alert(obj);
        one = obj.res[0];
        two = obj.res[1];
    },
    async: false
});

如果您可以使用两种以上的语言,那么最好全局存储
res

我随意稍微更新了脚本,还将您的响应添加到另一个设置中

首先是解决方案:

$.getJSON( "dropdown-language", function( data ) { // use getJSON for JSON: http://api.jquery.com/jquery.getjson/
    var response = data.res, // get 'res'
        flags = []; // prepare an array for flags

        /**
         * BETTER
         */
        response.forEach(function(element){ // loop through the response
            flags[element.flag] = element.enabled // add to the flags array, like flag['gr'] = 0
        });

        /**
         * KINDA WRONG
         * Will work, but you probably don't want this
         */
        var one = response[0],
            two = response[1];

    console.log(flags); // don't use alert, but display the object using console.log
}

“更好”的解决方案是因为您的结果现在是动态的,如果明天您的JSON响应有更多的标志呢?

请注意,您的JSON响应不正确,您是对的。修复了它。如果您在浏览器中实际替换了
下拉式语言的页面名
是否显示json?那么,如果你的网站是:并且你改变了它,它会显示JSON吗?当然。肯定API运行良好。如何帮助我将JSON作为字符串嵌入(硬编码)呢?这样-至少-我可以继续一点。或者只有两个对象以res返回。虽然我不确定顺序是否重要。谢谢,但它似乎还不起作用!我的意思是,我没有看到警报对话框。如何调试?请阅读问题下方的注释,您的JSON无效,请删除
后的
“标志”:…
行。要调试,点击F12,它将在任何浏览器中显示开发工具。您将看到错误。好的,我修复了输入错误,但仍然无法看到警报对话框。还可能是什么?控制台是否显示错误?你确定你的url是好的吗?您可以向ajax params对象添加一个
错误处理函数来查看发生了什么:
$ajax({url:…,success:…,error:})