{ "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 должны быть заполнены во втором и третьем выпадающих меню.
Попробуй это,
$(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();
});
Он вернет все результаты, которые вы хотите. Просто добавьте 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);
В 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.
array_unique
в PHP. ca1.php.net/array_unique