2012-10-31 145 views
0

我试图解析和使用jQuery搜索我的json文件,我能够解析json文件,但不能搜索它。搜索JSON与jQuery

我的HTML

<ol id="results"></ol>

我的jQuery

$(document).ready(function() { 
    $.getJSON('myJson.json', function(data) { 
     $.each(data, function(i, item) { 
      $('<li />').html(item.name + '<br>' + item.details + '<br>').appendTo('#results'); 
     } 
    }); 
});​ 

上面的代码返回的所有项目,但是现在我希望允许用户搜索JSON文件,所以我有一个表单输入并创建一个onclick事件并将输入传递给搜索请参阅下面的链接。

问题是输入变量不被传递给搜索? 请帮忙。

http://jsfiddle.net/xpTk5/7/


UPDATE:传递变量的正则表达式似乎是问题。


解决:if (item.name.search(new RegExp(q, "i")) != -1){

感谢您的努力和浪费你的时间很抱歉。

+1

我几乎可以肯定的是'正则表达式(/ '' + Q +'/ I)'不会做你的想法。 –

+0

@All在我的编辑中,我将格式化后的代码从他的小提琴中复制过来,但它与发布的原始代码不同。我已经恢复了编辑。 –

+0

你是对的,但是如果我使用'RegExp(/ q/i)',RegExp假定“q”是要匹配的字符串。 – spec

回答

1

您需要在提交表单后获取文本框的值。如果你有它,它将永远不会被设置,因为它在文档准备就绪时(并且可能在输入任何东西之前)获得值。

$(document).ready(function() { 
    $('#submit').click(function() { 
     var q = $('#query').val(); 
     $.getJSON('myJson.json', function(data) { 
      // iterator 
      $.each(data, function(i, item) { 
       // search the results using regular expression for the query 
       if (item.name.search(new RegExp(/''+q+''/i)) != -1) { 
        $('<li />').html(item.name + '<br>' + item.details + '<br>').appendTo('#results'); 
       } 
      }); 
     }); 
    }); 
}); 
+0

感谢gpojd,但是我尝试了你的建议,并且变量没有被传递。 – spec

+0

这在您发布的小提琴中起作用(尽管由于其他问题没有让它变得更远)。 – gpojd

0

可变正在由正则表达式读取。

$('#submit').click(function() { 
    var q = $('#query').val(); 
    $.getJSON('myJson.json', function(data) { 
     // iterator 
     $.each(data, function(i, item) { 
      // search the results using regular expression for the query 
      if (item.name.search(new RegExp(q, "i")) != -1) { 
       $('<li />').html(item.name + '<br>' + item.details + '<br>').appendTo('#results'); 
      } 
     }); 
    }); 
}); 

http://jsfiddle.net/xpTk5/8/