Javascript 无法读取未定义的的toLowerCase属性
因此,我正在处理一个音频部分,其中我从JSON文件中提取单词,当我在前端显示单词时,它应该在音频按钮上单击Javascript 无法读取未定义的的toLowerCase属性,javascript,jquery,ajax,Javascript,Jquery,Ajax,因此,我正在处理一个音频部分,其中我从JSON文件中提取单词,当我在前端显示单词时,它应该在音频按钮上单击onclick,从服务器提取单词并创建音频。。。但是我不断得到无法读取未定义的的小写属性,而且我似乎找不到错误 让我们从我声明的变量开始: var MEDIAARRAY; var WORDS; var audioArray; var audio = new Audio(); var LANGUAGE; var SOUNDARRAY; 这段代码(我接受了作为答案给出的代码,这对我有了进一步的
onclick
,从服务器提取单词并创建音频。。。但是我不断得到无法读取未定义的的小写属性,而且我似乎找不到错误
让我们从我声明的变量开始:
var MEDIAARRAY;
var WORDS;
var audioArray;
var audio = new Audio();
var LANGUAGE;
var SOUNDARRAY;
这段代码(我接受了作为答案给出的代码,这对我有了进一步的帮助,所以我决定用我现在拥有的代码编辑这个问题)
发生错误的行:
var foundID = MEDIAARRAY.audio.lowercase.indexOf($(this).parent().find('.exerciseWord').val().toLowerCase() + '.mp3');
类声音
附加到的按钮:
function getAudioForWords() {
var audioBtn = $('<a/>', {
'class': 'sound btn btn-primary'
}).html('<i class="fa fa-volume-up"></i>');
return audioBtn;
}
获取fileArray的代码片段,但很可能对您的检查毫无用处,但它与我的代码相关,所以。。。嗯
function getFileArray(param)
{
var request = {
language: param
};
$.ajax(
{
url: "TheServerURL",
type: "POST",
async: true,
data: request,
dataType: 'json',
}).done(function (response)
{
console.log(response)
MEDIAARRAY = response;
audioArray = response.audio;
console.log(audioArray);
});
}
错误状态VariableMediaArray在代码流中的某个位置保持未初始化状态。看看下面的内容是否能让您接近解决方案
您还没有提到在什么时候调用getFileArray函数。对getFileArray函数的调用是至关重要的,因为此时MEDIAARRAY被赋值
确保在访问MEDIAARRAY的任何属性之前调用getFileArray
确保API始终返回包含音频属性的对象
例如
$(document).on("click", ".sound", function () {
//Ensure you supply parameter value to your function(i.e. value of the element you take user input from)
getFileArray("SomeLanguage");
var foundID = MEDIAARRAY.audio.lowercase.indexOf($(this).parent().find('.exerciseWord').val().toLowerCase() + '.mp3');
var currentVal = $(this).parent().find('.fa-volume-up');
if (foundID > -1) {
var audio = new Audio();
audio.src = 'TheServerURL' + MEDIAARRAY.audio.path + MEDIAARRAY.audio.files[foundID] + '';
audio.play();
}
});
错误状态VariableMediaArray在代码流中的某个位置保持未初始化状态。看看下面的内容是否能让您接近解决方案
您还没有提到在什么时候调用getFileArray函数。对getFileArray函数的调用是至关重要的,因为此时MEDIAARRAY被赋值
确保在访问MEDIAARRAY的任何属性之前调用getFileArray
确保API始终返回包含音频属性的对象
例如
$(document).on("click", ".sound", function () {
//Ensure you supply parameter value to your function(i.e. value of the element you take user input from)
getFileArray("SomeLanguage");
var foundID = MEDIAARRAY.audio.lowercase.indexOf($(this).parent().find('.exerciseWord').val().toLowerCase() + '.mp3');
var currentVal = $(this).parent().find('.fa-volume-up');
if (foundID > -1) {
var audio = new Audio();
audio.src = 'TheServerURL' + MEDIAARRAY.audio.path + MEDIAARRAY.audio.files[foundID] + '';
audio.play();
}
});
console.log(响应)打印什么?没有。。。我尝试了console.log的东西,但是在我的控制台中看起来都不错(或者不好)。log也尝试了那个,我确实注意到了一件事:它在我的CMS端给出了相同的错误。但是:当我更改语言选择器时,它不再给出错误,而是播放声音。但是当我不更改语言选择器时,它会抛出相同的错误。console.log(响应)打印什么?什么都没有。。。我尝试了console.log的东西,但是在我的控制台中看起来都不错(或者不好)。log也尝试了那个,我确实注意到了一件事:它在我的CMS端给出了相同的错误。但是:当我更改语言选择器时,它不再给出错误,而是播放声音。但是当我不更改语言选择器时,它抛出了相同的错误。Oke,当我提到getFileArray时确实发生了一些事情,它现在获取所有内容,但返回响应“无法读取未定义的属性'toLowerCase'”。Oke,当我提到getFileArray时确实发生了一些事情,它现在获取所有内容,但返回响应“无法读取未定义的属性'toLowerCase'”
$(document).on("click", ".sound", function () {
//Ensure you supply parameter value to your function(i.e. value of the element you take user input from)
getFileArray("SomeLanguage");
var foundID = MEDIAARRAY.audio.lowercase.indexOf($(this).parent().find('.exerciseWord').val().toLowerCase() + '.mp3');
var currentVal = $(this).parent().find('.fa-volume-up');
if (foundID > -1) {
var audio = new Audio();
audio.src = 'TheServerURL' + MEDIAARRAY.audio.path + MEDIAARRAY.audio.files[foundID] + '';
audio.play();
}
});