如何保持变量的值?

时间:2018-05-02 05:13:01

标签: javascript json http

我不知道我无法在Javascript中访问变量的值。

urli的值类似于:https://cors.io/?https://tb.rg-adguard.net/php/get_edition.php?version_id=11&lang=name_en

但我尝试使用name_lang打印console.log(this.namelang)的值,但显示undefine

这是我的代码:

var urli = 'https://cors.io/?https://tb.rg-adguard.net/php/get_edition.php?version_id=' + version_id + "&lang=" + namelang;

$.ajax({
  type: "GET",
  url: urli,
  dataType: 'json',
  success: function(response){
    var options = '';
    console.log(this.namelang);
    $.each(response.editions, function() {
        options += '<option value="' + this.edition_id + '" style="color: ' + this.color + '">' + this.namelang + '</option>';
    });

    $('#edition_id').html('<option value="0">- ' + seledition + ' -</option>'+options);
    $('#edition_id').attr('disabled', false);
    $('#language_id').html('<option>- ' + sellanguage + ' -</option>');
    $('#language_id').attr('disabled', true);
    $('#arch_id').html('<option>- ' + selachitecture + ' -</option>');
    $('#arch_id').attr('disabled', true);   
  }
});

2 个答案:

答案 0 :(得分:1)

你确定你的回复中有namelang吗?

我在检查网址时看不到namelang。 以下是urli

的回复
{
  "editions": [
    {
      "name_en": "Windows 8.1 Pro + Core",
      "color": "green",
      "edition_id": "960032"
    },
    {
      "name_en": "Windows 8.1 Pro N + Core N",
      "color": "green",
      "edition_id": "960033"
    }
  ]
}

在我正确理解您的要求之后,我想出了解决方案。您不知道语言名称是什么,可以是name_enname_fr,但name_会很常见。对?如果是,则以下是解决方案:

此处的工作代码段:

let response = {"editions":[{"name_en":"Windows 8.1 Pro + Core","color":"green","edition_id":"960032"},{"name_en":"Windows 8.1 Pro N + Core N","color":"green","edition_id":"960033"}]};


$.each(response.editions, function() {

  console.log(this.edition_id);
  console.log(this.color)

  let keysArr = Object.keys(this);
  let langname = "name_";

  for (var key in this) {
    if (key.substring(0, langname.length) === langname) {
      console.log(this[key]); // your desired value
    }
  }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

答案 1 :(得分:1)

那是因为this,在回调中,只是JQuery xhr对象,如下所示:

response对象包含您想要的内容。但namelang不在其中。您提供的示例URL包含两个JSON对象的数组。

要访问第一个对象的color,您需要response[0].color