/ / Autouzupełnianie jquery jest naprawdę powolne na ASP.net MVC 4 mobile - jquery, asp.net-mvc, jquery-mobile

Autouzupełnianie jquery naprawdę powolne na ASP.net MVC 4 mobile - jquery, asp.net-mvc, jquery-mobile

Mam autouzupełnianie w mojej aplikacji MVC 4który łączy się z bazą danych wszystkich miast na świecie (dzięki czemu można sobie wyobrazić, że jest dość duży). Działa dobrze na komputerze, ale kiedy wchodzę na stronę w moim smartfonie, ładowanie trwa 3 sekundy, a wydajność staje się naprawdę powolna. Czy użycie Ajax lub JSON sprawi, że będzie to szybsze? Byłem już tylko programowaniem w MVC i Internecie teraz przez miesiąc, więc proszę o mnie proszę Tutaj jest kod (używam kodu z samouczków pluralsight):

Część widoku + JavaScript

<!--Searching through all the hotel locations -->
<p>Hotel Location (City): @Html.TextBoxFor(x => x.booking_instance.Location,
new { data_autocomplete = @Url.Action("QuickSearch", "Booking") })</p>

<script type="text/javascript">
$(document).ready(function () {
$(":input[data-autocomplete]").each(function () {
$(this).autocomplete({ source: $(this).attr("data-autocomplete") });
});
});
</script>

Kontroler

// this is my database of cities.
TE_TSQL1_HBOSDataContext _db = new TE_TSQL1_HBOSDataContext();
public ActionResult QuickSearch(string term)
{
var cities = _db.Cities
.Where (r => r.CityName.Contains(term))
.Select(r => new { label = (r.CityName + ", " + r.CountryName) });
return Json(cities, JsonRequestBehavior.AllowGet);
}

Odpowiedzi:

1 dla odpowiedzi № 1

Tak! używanie Jquery i Ajax zdecydowanie przyspieszy działanie telefonu komórkowego, ponieważ nie będziesz musiał ładować pełnego zestawu danych do pamięci telefonu, a następnie go przeszukać. Możesz pozwolić serwerowi C # dokonać wyboru, a następnie zwrócić tylko żądane dane. Najlepsze jest to, że twój serwer już zwraca wyniki JSON, i możesz mieć urządzenie mobilne zrobić pierwsze zapytanie po wprowadzeniu 2 znaków, znacznie ograniczając rozmiar zwracanego zestawu danych.

        $( ":input[data-autocomplete]" ).autocomplete({
source: "controllerPath/QuickSearch",
minLength: 2

});