Javascript 用Jquery搜索JSON
我不断得到未捕获的TypeError:无法读取未定义的属性“search”Javascript 用Jquery搜索JSON,javascript,jquery,json,web,web-deployment,Javascript,Jquery,Json,Web,Web Deployment,我不断得到未捕获的TypeError:无法读取未定义的属性“search” $('.searchBar').keydown(function(){ $.getJSON('js/data.json', function(data){ var search = $('.searchBar').val(); var regex = new RegExp(search, 'i'); $.each(data, function(key,val){ if((val
$('.searchBar').keydown(function(){
$.getJSON('js/data.json', function(data){
var search = $('.searchBar').val();
var regex = new RegExp(search, 'i');
$.each(data, function(key,val){
if((val.id.search(regex) != -1) || (val.title.search(regex) != -1)){
var img = "<img src= " + val.imgUrl + "/>"
var title = "<h1>" + val.title + "</h1>";
var description = "<p>" + val.description + "</p>";
var cta = "<button><a href= " + val.ctaUrl + ">" + "</a>Find out more about this product</button>";
$(img).appendTo('#data');
$(title).appendTo('#data');
$(description).appendTo('#data');
$(cta).appendTo('#data');
}
});
});
})
如果
val
包含id
和/或title
如下所示,则添加检查:
var textAndId = '';
textAndId += ('id' in val) ? val.id : '';
textAndId += ('title' in val) ? val.title : '';
并通过以下方式添加到代码中:
$.each(data, function(key,val){
var textAndId = '';
textAndId += ('id' in val) ? val.id : '';
textAndId += ('title' in val) ? val.title : '';
if(textAndId.search(regex) != -1){
如果
val
包含id
和/或title
如下所示,则添加检查:
var textAndId = '';
textAndId += ('id' in val) ? val.id : '';
textAndId += ('title' in val) ? val.title : '';
并通过以下方式添加到代码中:
$.each(data, function(key,val){
var textAndId = '';
textAndId += ('id' in val) ? val.id : '';
textAndId += ('title' in val) ? val.title : '';
if(textAndId.search(regex) != -1){
我不是针对JSON文件的正确裸体!哈哈我的目标不是JSON文件的裸体!哈哈您很可能会得到一个未定义的
val
,因此您无法访问此元素的val.id
或val.title
。使用console.Log(val)记录您的值
并查看您得到了什么。要么val.id
要么val.title
要么两者都未定义。我在控制台上打印了5个。在我的JSON文件中,我确实有totalResults“:5.如果这与此有关,您能显示console.log(数据)的输出吗
?我怀疑该对象没有按照您的代码预期嵌套。请在问题中的代码中添加2个console.logs,并列出每个控制台的输出,以便我们可以看到您的意思您很可能得到未定义的val
,因此您无法访问此元素的val.id
或val.title
。记录您的值使用console.log(val);
查看您得到了什么。要么val.id
要么val.title
或者两者都未定义。我在控制台上打印了5个。在我的JSON文件中,我有totalResults“:5。如果这与此有关?您能显示console.log(数据)
的输出吗?我怀疑该对象没有像代码所期望的那样嵌套。请在问题的代码中添加2个console.logs,并列出每个对象的输出,以便我们了解您的意思