javascript - $.each 在函数未定义(没有作品)
问题描述
使用函数的 JSON 输出存在问题。我需要这样的东西:
function loadnames()
{
return $.ajax({
type: "GET",
url: "<?php echo $servers; ?>",
dataType: 'json',
async: false,
success: function() {
console.log('All right');
},
error: function () {
console.log('Cry baby');
}
}).responseText;
}
function srvName(sid) {
var names = JSON.parse(loadnames());
$.each(names.data.servers, function(index, server) {
if(server.id == sid) {
return server.hostname;
}
});
}
alert(srvName(86));
但它不起作用。如果您从函数中删除 sid 并手动放置,那么一切正常并显示您需要的内容......如何解决这个问题?
这有效:
function srvName() {
var names = JSON.parse(loadnames());
$.each(names.data.servers, function(index, server) {
if(server.id == 86) {
return server.hostname;
}
});
}
alert(srvName());
//returns SERVER NAME 86 from alert
json示例:
{
"data": {
"servers":[
{
"id":86,
"hostname":"SERVER NAME 86"
},
{
"id":23,
"hostname":"SERVER NAME 23"
}
]
}
}
解决方案
只需用以下代码替换您的代码:-
function srvName(sid) {
var names = JSON.parse(loadnames());
if(names.data.servers) {
let server = names.data.servers.find(server => server.id === sid);
if(server) return server.hostname;
return 'matching server not found';
}
}
alert(srvName(86));
推荐阅读
- objective-c - 使用 clang 编译时无法解析引用 macOS SDK 标头
- r - 结合选择助手和谓词函数在 dplyr 中进行变异
- laravel - Laravel 与自定义表名和 ID 的多对多关系
- php - 带有消息“transaction_amount”属性的“MercadoPagoException”不能为空
- css - 更新 Windows 10 引导 css 后未加载
- php - 可以将多个域路由到不同的 CodeIgniter 模块或控制器吗?
- avro - 如何将 Avro GenericRecord 转换为有效的 Json,同时将时间戳字段从毫秒转换为日期时间?
- javascript - 使用 ReactJS.net 创建寻呼机。
- mysql - 通过 char 数组指针存储的结构成员数据返回垃圾值
- c# - c# winform call cmd和手动打开cmd有什么区别?