Копирование данных из массива JSON в объект JS для автозаполнения jQuery - PullRequest
1 голос
/ 08 апреля 2011

Я пытаюсь использовать плагин автозаполнения в jQuery, чтобы позволить пользователю быстро искать имя человека с помощью текстового поля и возвращать свой идентификатор пользователя Facebook.JSON, который предоставляет Facebook, выглядит следующим образом:

{
   "data":[
      {
         "name":"Emma Alexander",
         "id":"8110855"
      },
      {
         "name":"Dave Suckow",
         "id":"19546358"
      },
      {
         "name":"Jessica Willits",
         "id":"45734687"
      }
   ]
}

Однако я хотел бы выполнять поиск локально, а не извлекать Facebook JSON каждый раз, поэтому я думаю, что мне нужно скопировать все именаи идентификаторы в локальный объект JavaScript (я думаю, что это лучший способ сделать это?), а затем использовать jQuery для поиска по этим именам.Когда пользователь выбирает имя из текстового поля, он вызывает другую функцию и передает ему идентификатор Facebook выбранного человека.

Однако я не уверен, является ли это лучшим способом, или как бы я на самом делеприступим к его реализации.

Если бы кто-нибудь мог предложить пару небольших примеров кода, особенно для копирования данных из JSON Facebook в локальный объект Javascript и последующего поиска по этому объекту, это было бы очень полезно!:)

Большое спасибо

Ответы [ 3 ]

2 голосов
/ 08 апреля 2011

Хмм .. Вы могли бы сделать что-то вроде этого ...

var jsonval=
({
   "data":[
      {
         "name":"Emma Alexander",
         "id":"8110855"
      },
      {
         "name":"Dave Suckow",
         "id":"19546358"
      },
      {
         "name":"Jessica Willits",
         "id":"45734687"
      }
   ]
})


var name=new Array();
var id=new Array();
for(var i=0;i<jsonval.data.length;i++){
name.push(jsonval.data[i].name);
id.push(jsonval.data[i].id);

}

Массивы name и id будут содержать все имена и идентификаторы, извлеченные из JSON, и искать все значения вновые массивы созданы ... Это один способ ... другой - вы можете сохранить JSON, возвращенный в переменную jsonval, а затем каждый раз искать, используя цикл for, который использовался для помещения значений в массив ...

0 голосов
/ 08 апреля 2011

Не тестировалось, но следующая функция берет строку поиска и объект данных и ищет в поле имени и возвращает id пользователя или ноль, если совпадение не найдено.

function searchUser(search, data) {
    var matchedUser = null;
    $.each(data, function () {
        if (this.name.indexOf(search) !== -1) {
            matchedUser = this;
        }
    });
    return matchedUser && matchedUser.id;
}
0 голосов
/ 08 апреля 2011

Я думаю, вам лучше каждый раз звонить в fb json, потому что между поиском что-то может измениться. при этом если вы выполняете вызов ajsx под нагрузкой, вы можете просто установить переменную в начале, как это

  searchdata = "";

затем, как только ваш ajax-вызов будет выполнен, и вы получите данные json, просто установите переменную в dataresult bobs вашего дяди

searchdat = jsonresult;

имеет смысл?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...