2013-08-23 2 views
-1

Я пытаюсь получить все имена пользователей в автозавершении jQuery, но он не работает вообще.Autocomplete не работает в 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-

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

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

После сценарии я использую для IT-

<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

Try следующим

<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, то вам необходимо добавить/зарегистрировать файлы javascript и css в конфигурации bundle. Render обязательные файлы в вашем общем или соответствующем файле 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), тогда нам нужно использовать функцию карты, это хорошо форматирует данные в требуемом формате для автозаполнения. До тех пор, пока это форматирование данных не будет выполнено, пользовательский интерфейс диалогового окна подсказки не будет отображаться.

Надеюсь, что это поможет другим разработчикам.

Смежные вопросы