Возьмите разные значения, чтобы заполнить выпадающий

0
   { "Result": { "tags": [ { "name": "ABC", "email": "[email protected]", "sms": 123 }, { 
"name": "ABC", "email": "[email protected]", "sms": 456 }, { "name": "ABC", "email": 
"[email protected]", "sms": 789 }, { "name": "XYZ", "email": "[email protected]", "sms": 976 
}, { "name": "ABC", "email": "[email protected]", "sms": 543 } ] } }

У меня есть данные JSON, подобные этому. Я хочу проанализировать этот JSON на PHP или Javascript, чтобы заполнить их тремя раскрывающимися списками.

Имя | Электронная почта | смс

Но мне нужно заполнить различные имена в выпадающих меню и заполнить электронную почту и смс на основе выбора имени.

Пока я просто создал выпадающие списки.

Ссылка на скрипт: http://jsfiddle.net/CAB2z/

Пример:

Имя должно иметь: ABC | XYZ только один раз (Distinct: не следует повторять одно и то же значение). Когда мы выбираем ABC, три адреса электронной почты и номера телефонов для "ABC" из JSON должны быть заполнены во втором и третьем выпадающих меню.

  • 0
    Вы можете использовать array_unique в PHP. ca1.php.net/array_unique
  • 0
    После выбора первого раскрывающегося списка, чтобы появилось два других раскрывающихся списка (электронная почта и смс), зависят ли два раскрывающихся списка (электронная почта и смс) друг от друга?
Показать ещё 1 комментарий

3 ответа

1
Лучший ответ

Попробуй это,

$(function(){
    var json = {
        "Result": {
            "tags": [{"name": "ABC","email": "[email protected]","sms": 123},
            {"name": "ABC","email": "[email protected]","sms": 456},
            {"name": "ABC","email":"[email protected]","sms": 789},
            {"name": "XYZ","email": "[email protected]","sms": 976},
            {"name": "XYZ","email": "[email protected]","sms": 543}]
         }
    };

    var name = [],obj = {};
    $(json.Result.tags).each(function (k, v) {
        name[k] = (v.name);
        obj[k] = {name: v.name,email: v.email,sms: v.sms};
    });
    $($.unique(name)).each(function (i, v) {
        $('#name').append('<option value="'+v+'">'+v+'</option>');
    });
    $('#name').on('change', function () {
       var $that = $(this);
       $('#email').html('');$('#sms').html('');
       $.each(obj,function (i, v) {
          if( $that.val() == v.name) {
             $('#email').append('<option value="'+v.email+'">'+v.email+'</option>');
             $('#sms').append('<option value="'+v.sms+'">'+v.sms+'</option>');
          }
       });
    }).change();
});

Демо-версия

  • 0
    Как мы можем отсортировать их по возрастанию. Они сортируются в порядке убывания
  • 0
    Попробуйте использовать sort (). См. Демонстрационную версию jsfiddle.net/rohankumar1524/uC6BS/2.
1

Он вернет все результаты, которые вы хотите. Просто добавьте vaues в раскрывающемся списке своей части.

var resultArray = r.Result.tags;

var unique = {};
var distinctName = [];
var email = [];
var sms = [];

for( var i in resultArray ){
 if( typeof(unique[resultArray[i].name]) == "undefined"){
  distinctName.push(resultArray[i].name);  // push the unique names into the array

 }
 unique[resultArray[i].name] = 0;
     email.push(resultArray[i].email);  // push the email into the array
     sms.push(resultArray[i].sms)       // push the sms into the array
}

console.log(distinctName);
console.log(email);
console.log(sms);
0

В JavaScript с помощью jQuery вы можете:

var names, emails, smses;

(function() {
  data = JSON.parse(data); // Get the data formatted.
  var result = {
    name:  {},
    email: {},
    sms:   {}
  };
  $.each(data.Result.tags, function(index, value) {
    result.name [value.name]  = true; // True won't be used, it can be any value.
    result.email[value.email] = true;
    result.sms  [value.sms]   = true
  });
  names  = Object.keys(result.name);
  emails = Object.keys(result.email);
  smses  = Object.keys(result.sms);
} ()); // Temporary variables (like result) are destroyed.
// names, emails and smses contain your data.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню