Mam trochę JSON:

"accessories":{
  "tableware01":{
     "sku":"tableware01",
     "forceAmountHidden":"1",
     "upsell":"1",
     "discountAll":"1",
     "forceRemove":"1",
     "percentageDiscount":"12",
     "fixedDiscount":"1",
     "forceAmount":"1",
     "maximumQuantity":"12",
     "endDate":"2014-12-12T00:00:00",
     "minimumQuantity":"1",
     "startDate":"2012-12-12T00:00:00"
  },
  "cla000":{
     "sku":"cla000",
     "forceAmountHidden":"1",
     "upsell":"1",
     "discountAll":"1",
     "forceRemove":"1",
     "percentageDiscount":"23",
     "fixedDiscount":"1",
     "forceAmount":"1",
     "maximumQuantity":"123",
     "endDate":"2015-02-03T00:00:00",
     "minimumQuantity":"1",
     "startDate":"2011-02-03T00:00:00"
  }
   }

Muszę nacisnąć te dane do formularza. Pola, które muszę wygenerować, muszą wyglądać tak:

<input type="hidden" name="accsku1">
<input type="hidden" name="accdisc1">
<input type="hidden" name="accperc1">
<input type="hidden" name="accreg1">
<input type="hidden" name="accupsell1">
<input type="hidden" name="accnum">
<input type="hidden" name="acclimit1">
<input type="hidden" name="accforce1">
<input type="hidden" name="accforcehid1">
<input type="hidden" name="accforcerm1">

Nie mogę kontrolować klucza w JSON i nie mogę kontrolować nazwy pola formularza - muszą pozostać. Wiem, które dziedziny odpowiadają kluczem w JSON, "ACCDISC" jest "naprawiona". Muszę wstawić poprawną wartość z JSON do wartości pola. Również pola Iteracte (począwszy od 1) zgodnie z liczbą akcesoriów IT. Moja forma będzie kontynuowana

<input type="hidden" name="accsku2">
<input type="hidden" name="accdisc2">

I tak dalej.

Jestem dość nowy, aby pracować z JSON, ale dostałem ten projekt OK do tego punktu, gdzie nie jestem pewien, jak to podejść. Chciałbym móc wygenerować pola, ponieważ nie wiem, ile akcesoriów będę miał. Zastanawiałem się, czy mogę stworzyć jakiś mapę, gdzie mogę powiedzieć "SKU mecze wejściowe ACCSKU", a następnie dodaj indeks?

JSON jest fragmentem większego pliku zawierającego wiele danych o produkcie z różnymi klawiszami, jest to przykład tego, jak przyciągam go do mojej formy:

$.getJSON("urltoJSONhere",function(product){
    $.each(product.extendedFields, function(i){
        $( "<input type='hidden' name='"+this.name+"' value='"+this.data+"'>" ).appendTo( form );
    });

Powyżej jest znacznie prostsze dla "Extendedfields", ponieważ mogę używać nazwy "i" danych ", aby wygenerować pola wejściowe, ale naprawdę nie wiem, jak podejść do mojego problemu powyżej" Akcesoria ".

Czy ktoś może dać mi porady na temat tego, jak mogę to podejść?

Dodatkowe informacje na temat wyjaśnienia:

Wiem to: SKU = ACCSKU, FixtDiscount = ACCDISC, procencjaTiscount = Accuppsperc, dyskont = ACRGEG, UPSELL = ACCUPSELL, Minumantity = ACCNUM, MOCECTICTITY = ACCLIMIT, FORCEAMOUNT = ACCOCORCE, FORCEAMOUNTHIDEN = ACCOCOREHID, FORCEREMOVE = ACCOCORMERM

Potrzebuję tego w mojej formie:

<input type="hidden" name="accsku1" value="tableware01">
<input type="hidden" name="accdisc1" value="1">
<input type="hidden" name="accperc1" value="12">
<input type="hidden" name="accreg1" value="1">
<input type="hidden" name="accupsell1" value="1">
<input type="hidden" name="accnum1" value="1">
<input type="hidden" name="acclimit1" value="12">
<input type="hidden" name="accforce1" value="1">
<input type="hidden" name="accforcehid1" value="1">
<input type="hidden" name="accforcerm1" value="1">
<input type="hidden" name="accsku2" value="cla000">
<input type="hidden" name="accdisc2" value="1">
<input type="hidden" name="accperc2" value="23">
<input type="hidden" name="accreg2" value="1">
<input type="hidden" name="accupsell2" value="1">
<input type="hidden" name="accnum2" value="1">
<input type="hidden" name="acclimit2" value="123">
<input type="hidden" name="accforce2" value="1">
<input type="hidden" name="accforcehid2" value="1">
<input type="hidden" name="accforcerm2" value="1">
0
Hayley 21 listopad 2013, 13:23

2 odpowiedzi

Najlepsza odpowiedź

Miałem trochę pomocy z kolegą roboczą, która dała mi pomoc, tworząc mapę, która jest następnie używana do budowy pól wejściowych. Opublikuję to w przypadku, gdy ktoś inny potrzebuje podobnego rozwiązania. Skrypt działa z formą z identyfikacją "ACCFORM".

var accessories = {
"tableware01": {
    "sku": "tableware01",
        "forceAmountHidden": "1",
        "upsell": "1",
        "discountAll": "1",
        "forceRemove": "1",
        "percentageDiscount": "12",
        "fixedDiscount": "1",
        "forceAmount": "1",
        "maximumQuantity": "12",
        "endDate": "2014-12-12T00:00:00",
        "minimumQuantity": "1",
        "startDate": "2012-12-12T00:00:00"
},
    "cla000": {
    "sku": "cla000",
        "forceAmountHidden": "1",
        "upsell": "1",
        "discountAll": "1",
        "forceRemove": "1",
        "percentageDiscount": "23",
        "fixedDiscount": "1",
        "forceAmount": "1",
        "maximumQuantity": "123",
        "endDate": "2015-02-03T00:00:00",
        "minimumQuantity": "1",
        "startDate": "2011-02-03T00:00:00"
}
}

var map = {
    sku: "accsku",
    forceAmountHidden: "accforcehid",
    upsell: "accupsell",
    discountAll: "accreg",
    forceRemove: "accforcerm",
    percentageDiscount: "accperc",
    fixedDiscount: "accdisc",
    forceAmount: "accforce",
    maximumQuantity: "acclimit",
    minimumQuantity: "accnum",
    endDate:"endDate",
    startDate:"startDate"
}
var form = $("#accform");
var index = 1;
for (var k in accessories) {
    var accessory = accessories[k];
    for (var prop in accessory) {
        var name = map[prop] + index;
        $('input[name=' + name + ']').val(name);
        $( "<input type='text' name='"+name+"' value='"+accessory[prop]+"'>" ).appendTo( form );
    }
    index++;
}
0
Hayley 25 listopad 2013, 10:44

Sprawdź ten link, jeśli pomoże.

Musisz użyć zagnieżdżonego .each, aby uzyskać dostęp do danych wewnętrznych.

http://jsfiddle.net/pe6ye/9/

0
Nitin Varpe 21 listopad 2013, 11:02