Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 用Jquery搜索JSON_Javascript_Jquery_Json_Web_Web Deployment - Fatal编程技术网

Javascript 用Jquery搜索JSON

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

我不断得到未捕获的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.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,并列出每个对象的输出,以便我们了解您的意思