我用JSON数据呈现摘要,因为我正在检查媒体。如果媒体(图像、音频、视频)存在于JSON数据中,它应该将相应的媒体呈现给屏幕。因此,我正在根据文件类型检查每个包含或不包含媒体的值。我在检查不同的数据值时遇到了这个问题
这里是我的JS代码
var disp=[
{
"Session_ID": 1,
"column1": "http://dev.starport.in/phpupload/dentist.jpeg",
"Session_Name": "0",
"Session_Code": "0",
"Start_Time": "09:30",
"End_Time": "09:30",
"Staff": 0,
"Date": "/Date(-2188013400000)/",
"Status": 1,
"RowNumber": 1
}
];
var mediatype;
var media;
var fname;
$.each(disp[0],function(key,value)
{
fname=value;
media=0;
var filetype;
if(fname.indexOf(".")> -1) // problem
filetype = fname.split('.').pop();
else
return true;
if($.inArray(filetype, ['gif','png','jpg','jpeg']) >= 1) {
media=1;
mediatype="image";
return false;
}
else if($.inArray(filetype, ['mkv','mp4','vob']) >= 1) {
media=1;
mediatype="video";
return false;
}
else if(filetype == "mp3") {
media=1;
mediatype="audio";
return false;
}
else
{
media=0;
}
});
console.log(mediatype);因此,我的代码适用于字符串,并在其他格式出现错误时呈现适当的项。
等待答复,谢谢
发布于 2016-10-21 07:22:17
这段代码将遍历disp数组中的所有项,并对每个项迭代他的key - value。
您的问题是,第一个值是int,因此不能使用indexOf。您应该首先检查该值是否为string。
var disp = [{
"Session_ID": 1,
"column1": "http://dev.starport.in/phpupload/dentist.jpeg",
"Session_Name": "0",
"Session_Code": "0",
"Start_Time": "09:30",
"End_Time": "09:30",
"Staff": 0,
"Date": "/Date(-2188013400000)/",
"Status": 1,
"RowNumber": 1
}];
var mediatype;
var media;
var fname;
disp.forEach(function(item) {
var media = 0;
var filetype;
for (var key in item) {
if (typeof item[key] === "string") {
if (item[key].indexOf(".") > -1) {
filetype = item.column1.split(".").pop();
break;
}
}
}
var media = 0;
var filetype;
if (item.column1.indexOf(".") > -1) {
filetype = item.column1.split(".").pop();
}
if ($.inArray(filetype, ['gif', 'png', 'jpg', 'jpeg']) >= 1) {
media = 1;
mediatype = "image";
return false;
} else if ($.inArray(filetype, ['mkv', 'mp4', 'vob']) >= 1) {
media = 1;
mediatype = "video";
return false;
} else if (filetype == "mp3") {
media = 1;
mediatype = "audio";
return false;
} else {
media = 0;
}
});
console.log(mediatype);<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
注意事项
这是一种非常糟糕的做法。你应该知道你的媒体存放在哪里。例如,将媒体存储在End_Time中是非常奇怪的。
最好的解决方案是更改API和发送的JSON
发布于 2016-10-21 07:19:43
解决方案的问题--在后端和api结构上工作。
请按照以下步骤操作。
发布于 2016-10-21 07:38:14
问题: indexOf是一个字符串函数。代码遍历所有JSON属性。它们也包含数字。这是造成问题的原因。也许更好的方法是直接导航到适当的攻击。
console.log(disp[0].column1)
"http://dev.starport.in/phpupload/dentist.jpeg"我的意见是你应该重新考虑你的问题。=)
向鲁本问好
https://stackoverflow.com/questions/40170517
复制相似问题