2015-08-08 50 views
0

爲什麼我的循環返回3的數組長度,但回調函數searchKey(value).length返回0?獲取jQuery數組的長度

 function searchKey(value) { 
     if (value.length > 0) { 
      var keys = getKeys(value);// return array string 
      var arr = []; 
      $.post('@Url.Content("~/Home/GetJsonData")', {}, function (result) { 

       $.each(eval(result.replace(/[\r\n]/, "")), function (index, item) { 
        if (item.Tag != null) { 
         for (var i = 0; i < keys.length; i++) { 

          if (item.Tag.toLowerCase().indexOf(keys[i]) > -1) { 

           arr.push({ 
            "Key": item.Key, 
            "Value": item.Tag, 
            "Tag": keys[i], 
            "Length": keys[i].length 

           }); 
           alert("arr:" + arr.length);// result: 3 
           break; 
          } 
         } 
        } 
       });     
      }, "json"); 
     } 
     alert("arr:" + arr.length);// result: 0 
     return arr; 
} 

    function getKeys($param) { 
     //some code to find 'keys' 
     return keys; 
    } 

回答

0

jquery post/get請求是異步的。你的函數發送post請求,完成,返回空數組,然後服務器的響應返回給客戶端。 您可以使其同步(https://stackoverflow.com/a/5821467/5206593),但這不是個好主意,因爲您的頁面會很慢。