/ / jquery autocomplete наистина бавно на ASP.net MVC 4 mobile - jquery, asp.net-mvc, jquery-mobile

jquery autocomplete наистина бавно на ASP.net MVC 4 мобилен - jquery, asp.net-mvc, jquery-mobile

Имам автодовършване в моето приложение MVC 4който се свързва с база данни на всички градове в света (така че можете да си представите, че е доста голям). Работи добре на компютъра, но когато отида на сайта на моя смартфон, за да се зареждат 3 секунди, изпълнението му става наистина бавно. Ще използва ли Аякс или JSON по-бързо? Аз бях само програмиране в MVC и мрежата сега в продължение на един месец, така че моля, носете с мен. Ето кода (аз използвам кода от множествено число уроци):

Част от изгледа + 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>

контрольор

// 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);
}

Отговори:

1 за отговор № 1

Да! използването на Jquery и Ajax определено ще направи по-бързо на вашия мобилен телефон, тъй като няма да трябва да заредите пълния набор от данни в паметта на телефоните и след това да ги търсите. Можете да оставите сървъра C # да избира и след това да върне само данните, които искате. Най-хубавата част е, че вашият сървър вече връща JSON резултати и можете да накарате мобилното устройство да направи първата си заявка, след като сте въвели 2 знака, което значително ограничава размера на набора от данни, които сте върнали.

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

});