2013-08-23 91 views
-1

我想在jQuery自動完成所有用戶名,但它似乎並沒有工作。自動完成不工作在jQuery

控制器 -

public ActionResult Allusers(string Email) { 
      if (ModelState.IsValid) { 
       var allUser = (from us in db.SystemUsers 
          select new UserModel 
       { 
       Email=us.Email, 
       UserId=us.UserId 
       }).Distinct().ToArray(); 

       // ViewBag.Team = allUser.OrderBy(x => x.Text); 
       return Json(allUser,JsonRequestBehavior.AllowGet); 
      } 
      return View(); 
     } 

腳本 -

<script type="text/javascript"> 
    $(function() { 
     $("input #autocomplete").autocomplete({ 
      source: function (request, response) { 
       $.ajax({ 
        url: '/AllUsers/AllUsers/', 
        type: "POST", 
        dataType: "json" 

       }); 
      } 
     }); 
    }); 
</script> 

以下腳本我使用它 -

<script src="../../Scripts/jquery.unobtrusive-ajax.min.js" type="text/javascript"></script> 
<script src="../../Scripts/jquery-1.6.2.min.js" type="text/javascript"></script> 
<script src="../../Scripts/jquery-ui-1.8.11.js" type="text/javascript"></script> 

,但沒有運氣。

+0

「但它似乎根本不起作用」。它是否有效?如果不是,請給我們更多的細節 – glautrou

+0

@glautrou,不,它不工作,我想從表中獲取用戶名列表 – Manoj

回答

0

嘗試如下

<script type="text/javascript"> 
$(function() { 
    var itemList = []; 
    $("input #autocomplete").autocomplete({ 
     source: function (request, response) { 
      $.ajax({ 
       url: '/AllUsers/AllUsers/', 
       type: "POST", 
       dataType: "json", 
       Sucess: function(result) { 
        $.each(result, function (index, item) { 
         itemList.push({ label: item.Email, value: item.UserId}); 
        }); 
       } 
      }); 
     response(itemList); 
     } 
    }); 
}); 

0

我也stucked在此然而下面爲我​​工作。 在我的情況下,我的json結果是字符串數組,所以沒有列返回的數據。

如果您使用的是.cshtml而不是html,那麼您必須在bundle config中添加/註冊javascript和css文件。 在共享或相應的cshtml文件中呈現所需的文件。

後,在您的CSHTML文件中添加如下一行:

<input type='text' id='stockName'/> 

下面的部分是非常棘手的,重要的是:

$(function() { 
     $('#stockName').autocomplete({ 
      source: function (request, response) { 
       $.getJSON("/EquityList/GetStockNames?term=" + request.term, function (data) { 
              var realArray = $.makeArray(data) 

        response($.map(realArray, function (item) { 
         return { 
          value: item, 
          id: item 
         } 
        })) 

       }); 
      }, 
      minLength: 3, 
      delay: 0 
     }); 
}); 

重要提示: 1)我們需要格式化JSON數據到數組第一個 2)那麼我們需要使用map函數,這很好地將數據格式化爲自動完成所需的格式。直到並且除非此數據格式化未完成,否則不會顯示建議對話框UI。

希望這個幫助其他開發者。