объект jquery как параметр для функции

#json #function #object #parameter-passing

#json #функция #объект #передача параметров

Вопрос:

Это мой ответ на jquery:

 [ 

    { "depot":
      { 
       "id": "D1",
        "intersection": {
            "first": "Markham",
            "second": "Lawrence"
        },
        "address": {
            "number": "25",
            "street": "Cougar Court",
            "city": "Scarborough",
            "province": "ON",
            "postal_code": "M1J"
        } 
     },
     "vehicle": [

            {
                "id": "V1",
                "depot_id": "D1",
                "model": "Ford Focus",
                "price": "45",
                "km_per_litre": "15",
                "cargo_cu_m": "YES",
                "category": "Compact car",
                "image": "www.coolcarz.com"
            }

                ,

            {
                "id": "V2",
                "depot_id": "D1",
                "model": "Honda Civic",
                "price": "45",
                "km_per_litre": "150",
                "cargo_cu_m": "YES",
                "category": "Compact car",
                "image": "www.coolcarz.com"
            }

                ,

            {
                "id": "V8",
                "depot_id": "D1",
                "model": "Pontiac Aztek",
                "price": "10",
                "km_per_litre": "6",
                "cargo_cu_m": "YES",
                "category": "SUV",
                "image": "www.nocoolcarz.com"
            }

                ,

            {
                "id": "V12",
                "depot_id": "D1",
                "model": "Chevrolet Impala",
                "price": "45",
                "km_per_litre": "12",
                "cargo_cu_m": "YES",
                "category": "Standard car",
                "image": "www.coolcarz.com"
            }

                ,

            {
                "id": "V29",
                "depot_id": "D1",
                "model": "Nissan Leaf",
                "price": "150",
                "km_per_litre": "0",
                "cargo_cu_m": "YES",
                "category": "Electronic Car",
                "image": "www.coolcarz.com"
            }

        ]
    }

     ,

    { "depot":
      { 
       "id": "A1",
        "intersection": {
            "first": "Markham",
            "second": "Lawrence"
        },
        "address": {
            "number": "25",
            "street": "Cougar Court",
            "city": "Scarborough",
            "province": "ON",
            "postal_code": "m1J"
        } 
     },
     "vehicle": [

        ]
    }

  ]
  

Что я хочу сделать, так это то, что в какой-то момент моего кода, когда я получу эти данные ответа, я хочу передать, скажем, data [0] или или data [0].vehicle[1] в функцию
То, как я делаю это сейчас, это:

 function(data) {
    var items = [];
    for( i=0; i<data.length; i  ){
        items.push('<b>'   data[i].depot.intersection.first "-"  data[i].depot.intersection.second   " depot has following cars:"  '</b>');
        for( k=0; k<data[i].vehicle.length;k  ){
            str = '<li> <a href="#" onClick="moreInfo(' data ')">'         data[i].vehicle[k].category  "</a>, $"  data[i].vehicle[k].price  ' a day </li>';

                                    items.push(str);
  

по сути, я пытаюсь создать гиперссылку (с категорией транспортного средства в виде текста), и когда пользователь нажимает на эту гиперссылку, я хочу передать массив информации о транспортном средстве новой функции с именем MoreInfo, которая выполняет свою работу. Теперь, когда я делаю это и нажимаю на гиперссылку, я вижу ошибку

 missing ] after element list
timepass([object Object],[object Object]
  

Есть идеи?

Ответ №1:

Удалите 2 квадратные скобки из начала и конца вашего кода json и используйте его как объект, а не как массив.

То, что вы сделали, это создание массива объектов, а не объекта JSON

Комментарии:

1. Это неверно. Допустимый JSON может иметь либо object ( {} ), либо array ( [] ) в качестве самого верхнего объекта. Смотрите самое начало RFC : «Текст в формате JSON представляет собой сериализованный объект или массив JSON-text = object / array «.

2. Я не говорю, что это неверно, просто предлагаю использовать объектную нотацию вместо нотации массива. Извините, если я делаю это запутанным

3. WooDzu вы можете быть более конкретными?

4. измените все квадратные скобки на круглые в вашей нотации Json (или в коде генератора), затем выполните итерацию по анализируемому объекту точно так же, как вы делаете, с одним отличием, используйте цикл for(depot в data). В объекте нет методов, так что вы можете безопасно его использовать.