itsathere Ответов: 3

назначение формата JSON результат в массив без цикла в JavaScript/JQuery с


 public ActionResult GetAllCity()
        {
            CountryBL objbl = new CountryBL();
            var model = new MyCustomerModel();
            var itmlist = objbl.FetchCity();
            model.CityList = itmlist.Select(x =>
            {
                return new MyCustomerModel()
                {
                    MCCity = x.Name,
                    MCZip = x.ZipCode,
                    MCStateId = x.StateId,
                    StateAbbreviation = x.StateAbbreviation,
                    MCShippingState = x.StateName
                };
            }).ToList();

            var jsonResult = Json(model.CityList, JsonRequestBehavior.AllowGet);
            jsonResult.MaxJsonLength = int.MaxValue;
            return jsonResult;
        }


<script>
var $ac = jQuery.noConflict();
    var Zip = [];
    var City = [];
    var State = [];
    $ac(document).ready(function () {
        debugger;
        $ac.ajax({
            url: '@Url.Action("GetAllCity", "Account")',
            type: "GET",
            success: function (data) {
                debugger;
                if (data != null) {
                    //for (var k in data) {
                    //    Zip.push(data[k].MCZip);
                    //    City.push(data[k].MCCity);
                    //    //State.push(data[k].MCShippingState);
                    //}
                    Zip.push(data);
                    //Zip.push(data.MCCity);

                    autocompletezipcodeBilling(Zip);
                    autocompletezipcodeShipping(Zip);
                    autocompleteCityBilling(City);
                    autocompletezipCityShipping(City);
                }
            }
        });
        });
</script>


Мне это нужно, потому что, когда я помещаю большой объем данных в цикл, требуется очень много времени, чтобы протолкнуть данные внутрь array.So, если у кого-то есть решение, Пожалуйста, помогите.
Спасибо.

George Jonsson

Является ли AngularJS альтернативой?

Joy Acharya,90

Когда вы выбираете город в списке элементов, здесь просто выберите имя,Zipcode,StateId ,StateAbbreviation, StateName. Тогда вам не нужна никакая петля. Просто верните itemList в качестве результата Json.

3 Ответов

Рейтинг:
19

itsathere

public ActionResult GetAllCity()
        {
            CountryBL objbl = new CountryBL();
            var model = new MyCustomerModel();
            var itmlist = objbl.FetchCity();
            model.CityList = itmlist.Select(x =>
            {
                return new MyCustomerModel()
                {
                    MCCity = x.Name,
                    MCZip = x.ZipCode,
                    MCStateId = x.StateId,
                    StateAbbreviation = x.StateAbbreviation,
                    MCShippingState = x.StateName
                };
            }).ToList();
            var citylist = model.CityList.Select(x => x.MCCity).ToArray();
            var Ziplist = model.CityList.Select(x => x.MCZip).ToArray();
            var jsonResult = Json(new { citylist = citylist, Ziplist=Ziplist }, JsonRequestBehavior.AllowGet);
            jsonResult.MaxJsonLength = int.MaxValue;
            return jsonResult;
        }
<script>
var $ac = jQuery.noConflict();
    var Zip = [];
    var City = [];
    var State = [];
    $ac(document).ready(function () {
        debugger;
        $ac.ajax({
            url: '@Url.Action("GetAllCity", "Account")',
            type: "GET",
            success: function (data) {
                debugger;
                if (data != null) {
                   
                    City=data.citylist;
                    Zip=data.Ziplist;
                    autocompletezipcodeBilling(Zip);
                    autocompletezipcodeShipping(Zip);
                    autocompleteCityBilling(City);
                    autocompletezipCityShipping(City);
                }
            }
        });
});
</script>


Patrice T

Вы не удалили циклы, вы изменили способ заполнения массивов.

manosabari

Хороший ответ

Рейтинг:
1

Patrice T

Боюсь, вы неправильно задаете вопрос.
Чтобы присвоить массиву большой объем данных, он всегда включает в себя цикл или множество, скрытых или явных, не важно, что именно, есть цикл.

Я думаю, что петля не является корнем проблемы. Вы должны скорее объяснить нам, что вы делаете с более подробной информацией, чтобы мы могли догадаться, как справиться с этой проблемой.
Размер данных-интересная деталь.


Рейтинг:
0

PANKAJMAURYA

Вы можете попробовать функцию JQuery. each ()

var $ac = jQuery.noConflict();   
    $ac(document).ready(function () {
        debugger;
        $ac.ajax({
            url: '@Url.Action("GetAllCity", "Account")',
            type: "GET",
            success: function (data) {
                debugger;
                if (data != null) {
                 $ac.each(data, function(index, item) {
                    autocompletezipcodeBilling(item.MCZip);
                    autocompletezipcodeShipping(item.MCZip);
                    autocompleteCityBilling(item.MCCity);
                    autocompletezipCityShipping(item.MCCity);
                   });                 
                }
            }
        });
        });