2012-10-31 106 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/