我不知道我无法在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);
}
});
答案 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_en
或name_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
。