检查JSON中是否有值

时间:2014-03-03 20:30:02

标签: javascript jquery json

假设我有一个如下的JSON

[{"skill":"java"},{"skill","js"},{"skill","jquery"}]

我需要查找输入的技能是否在JSON中可用

function checkSearchQuery(query){
    $.getJSON('assets/static/json/keywords.json',function(data){
        $.each(data, function() {  
            if(query.toLowerCase() == this.skill.toLowerCase()) { 
                return true; 
            } 
         });
     });
}

我正在检查这个

if(checkSearchQuery("Java")) {
       // Do the action
}
else {
       // Do else part
}

但这似乎总是执行else部分。

2 个答案:

答案 0 :(得分:1)

由于您在checkSearchQuery()内进行异步调用,因此将在函数返回之前评估if条件。您需要了解这一点,或者在成功处理程序中完成工作,或者使用done()之类的东西来使用延迟对象。例如:

$.getJSON('assets/static/json/keywords.json',function(data){
    $.each(data, function() {  
        if(query.toLowerCase() == this.skill.toLowerCase()) { 
            return true; 
        } 
     });
 }).done(function(..)) {
     // perform some action
 });

答案 1 :(得分:0)

$.getJSON工作异步,你应该发送一个回调函数,

function checkSearchQuery(query, callback){
    var result = false;
    $.getJSON('assets/static/json/keywords.json',function(data){
        $.each(data, function() {  
            if(query.toLowerCase() == this.skill.toLowerCase()) { 
              result = true;  
            } 
         });
         callback(result);
     });
}

checkSearchQuery("Java", function(result) {
  if (result == true) {
    //do the action
  } else {
    //do else part.
  }
});