Многомерный массив как вывести данные на страничку
Получаю данные с сервера (json)
в массив data вот такого вида
{"id":"2","Id_school":"350","id_class":"5v"Id_p":"Русский","date":"08\/20\/2011","nomer_yroka":"1"},
,{"id":"2","Id_school":"350","id_class":"5v"Id_p":"математика","date":"08\/20\/2011","nomer_yroka":"2"},
{"id":"2","Id_school":"350","id_class":"5v"Id_p":",Биология","date":"08\/20\/2011","nomer_yroka":"3"},
делаю цикл
for( var i in data ) {
for( var k in data[ i ] ) {
$( "#" + k ).append( data[ i ][ k ] );
}}
засовываю переменные на страничку в div элемент по id =Id_p и в итоге у меня в id_p падает Русский математика Биология как мне разграничить вывод, чтобы в три разных дива засовывались значения предметов (id_p) |
пиши селекторы через запятую
*!*$(..., ..., ...)*/!*.append( data[ i ][ k ] ); |
Цитата:
или я туплю то есть для каждого аргумента сделать отдельный id и он туда будет по порядку выводить ? |
неясно.
for( var i in data ) {
for( var k in data[ i ] ) {
$( "#" + k ).append( data[ i ][ k ] );
}}
этот цикл будет проходиться по всему массиву и по каждому элементу массива, т.е. по объекту. потом по каждому свойству объекта будет искаться элемент с таким ИД и туда будет вписываться значение текущего поля. т.е. этот объект
{"id":"2","Id_school":"350","id_class":"5v", "Id_p":"Русский","date":"08\/20\/2011","nomer_yroka":"1"}
будет искать элемент с ИД "id" и вставлять в него "2", искать "Id_school" и вставлять туда "350".. искать "Id_p" и туда вставлять "Русский". ясно, к чему я клоню? ошибка в написании кода. Цитата:
Цитата:
|
Да ты правильно понял
я добился того что у меня в<div id="id_p"></div> падает три значения
Русский математика Биология хорошо, но я не могу понять как мне сделать правильно выборку из этого массива чтобы в не выводить все значения в один id_p а сделать <div id="хз1" > <div> в этот див падало значение Русский <div id="хз2" > <div> в этот див падало значение математика <div id="хз3" > <div> в этот див падало значение биология ну а совсем фетиш если бы у меня выбиралась если "nomer_yroka":"1" то вставить русский в див 1 если "nomer_yroka":"2 то вставить математику в див 2"
{"id":"2","Id_school":"350","id_class":"5v"Id_p":"Русский","date":"08\/20\/2011","nomer_yroka":"1"},
,{"id":"2","Id_school":"350","id_class":"5v"Id_p":"математика","date":"08\/20\/2011","nomer_yroka":"2"},
вот такой страшный объект в первой его части "nomer_yroka":"1" значит в в div 1 надо вывести id_p этого предмета(русский) во второй части "nomer_yroka":"2 значит в див 2 надо вывести id_p 'этой части и это будет математика" итд |
Есть мысль на то чтобы как то автоматически присваивать вытащенным id значения
встретилась один раз id_p1 второй раз id_p2 итд. и в них уже выводить наши предметы |
$.each(data, function(index,a){
alert("Номер : "+ index+"\n\n Язык : "+ a[ "Id_p"]);
});
|
Спасибо это уже сильно радует
Цитата:
0 1 2 |
Цитата:
$("#хз"+index )...
|
Спасибо Огромное
success: function(data){
for( var i in data ) {
for( var k in data[ i ] ) {
$( "#" + k ).append( data[ i ][ k ] );
$.each(data, function(index,a){
// index -> какой по счету объект в data, a -> data[ index ]
for(var i in a ) {
// i -> Id_p, a[ p ] -> qwerty
if(i === "Id_p"){
$("#id_p" + index).append(a[i]);
// alert("Номер : "+ index+"\n\n Язык : "+ a[i]);
};
};
все супер к этому иду уже две недели СПАСИБО ОГРОМНОЕ есть только маленькая мелочь действительно все выводиться по дивом только в повторяется одно и тоже слово 100 раз |
что то с циклами перемудрил
что то с циклами перемудрил
:write: |
Все заработало Огромное Спасибо.!
Все заработало Огромное Спасибо.
Скажите пожалуйста а как в цикле очищать див если в нем есть значение? |
$('#mydiv').empty();
|
Спасибо помогло
Если вдруг интересно вот что получилось
$.ajax({
type: "POST",
url: "http://localhost/dnevnik/test.php",
data: ({a:a,b:b}),
dataType: 'json',
beforesend: alert("Отправляемые данные a=" +a+ "b="+b),
success: function(data){
$.each(data, function(index,a){
// index -> какой по счету объект в data, a -> data[ index ]
for(var i in a ) {
// i -> Id_p, a[ p ] -> qwerty
if(i === "Id_p"){
$("#Id_p" + index).empty(a[i]);
$("#Id_p" + index).append(a[i]);
if(i === "id_dz"){
$("#Id_dz" + index).empty(a[i]);
$("#id_dz" + index).append(a[i]);
из нашего массива date формируем индивидуальный id для каждого значения и выгружаем их в разные дивы :))) Хреново только что очищает если данные приходят из php а вот если не приходят то оставляет |
complete: function() {
// тут чисти если ничего не пришло
}
Но помни эта функция вызывается в любом случае, даже если что-то пришло или не пришло. Так что надо проверять. |
Подскажи пожалуйста где у меня тут ошибка ни как не пойму
Цитата:
script type="text/javascript">
$(function(){
$("#datepicker").datepicker({
onSelect: function(dateText, inst) {
alert(dateText);
$("#datepicker").click(function(){
var a = $("#datepicker").val();
var b = <?php echo $myrow['id_user']; ?>
$.ajax({
type: "POST",
url: "http://localhost/dnevnik/test.php",
data: ({a:a,b:b}),
dataType: 'json',
beforesend: alert("Отправляемые данные a=" +a+ "b="+b),
success: function(data){
$.each(data, function(index,a){
// index -> какой по счету объект в data, a -> data[ index ]
for(var i in a ) {
// i -> Id_p, a[ p ] -> qwerty
if(i === "Id_p"){
$("#Id_p" + index).empty(a[i]);
$("#Id_p" + index).append(a[i]);
};
if(i === "id_dz"){
$("#id_dz" + index).empty(a[i]);
$("#id_dz" + index).append(a[i]);
};
if(i === "ocenka"){
$("#ocenka" + index).empty(a[i]);
$("#ocenka" + index).append(a[i]);
// alert("Номер : "+ index+"\n\n Язык : "+ a[i]);
};
};
});
Теперь хочу сделать чтобы по клику у меня сначала все данные удалялись....
script type="text/javascript">
$(function(){
$("#datepicker").datepicker({
onSelect: function(dateText, inst) {
alert(dateText);
$("#datepicker").click(function(){
complete: function() {
// тут чисти если ничего не пришло
$("#Id_p0").empty();------------------вставил эту строчку и сразу все перестает работать
}
var a = $("#datepicker").val();
var b = <?php echo $myrow['id_user']; ?>
$.ajax({
type: "POST",
url: "http://localhost/dnevnik/test.php",
data: ({a:a,b:b}),
dataType: 'json',
beforesend: alert("Отправляемые данные a=" +a+ "b="+b),
success: function(data){
$.each(data, function(index,a){
// index -> какой по счету объект в data, a -> data[ index ]
for(var i in a ) {
// i -> Id_p, a[ p ] -> qwerty
if(i === "Id_p"){
$("#Id_p" + index).empty(a[i]);
$("#Id_p" + index).append(a[i]);
};
if(i === "id_dz"){
$("#id_dz" + index).empty(a[i]);
$("#id_dz" + index).append(a[i]);
};
if(i === "ocenka"){
$("#ocenka" + index).empty(a[i]);
$("#ocenka" + index).append(a[i]);
// alert("Номер : "+ index+"\n\n Язык : "+ a[i]);
};
};
});
|
ну ты смешной, встявлять ее надо не туда куда ты ее вставил:
$.ajax({
....
....
success: function( data ) {
....
....
....
},
complete: function() {
// выполниться после вызова success
}
});
|
Спасибо помогло
но вообщем я все ровно не смог сделать правильное условие
пришлось сделать так: У меня выборка по дате шла ( календарь ) я вообщем засунул календарь в див а на див повесил onclick поэтому у меня сначала все поля обнуляются а потом туда приходит из базы если если есть чему приходить. Это не слишком убого ?
function c() {
$("#Id_p0").empty();
$("#Id_p1").empty();
$("#Id_p2").empty();
$("#id_dz0").empty();
$("#id_dz1").empty();
$("#id_dz2").empty();
$("#ocenka0").empty();
$("#ocenka1").empty();
$("#ocenka2").empty();
}
|
function c() {
$("div[id^=Id_p], div[id^=id_dz], div[id^=ocenka]").empty();
}
|
Цитата:
можно так
function c() {
$("div[id^=Id_p], div[id^=id_dz], div[id^=ocenka]").empty();
}
но это мне кажется медленным .. каждый раз будут браться все дивы и искаться именно те, у которых атрибут бла бла. хотя.. кому какая разница? nobody cares |
Цитата:
|
если ли в jq что-то такое ??
$("div").filter("*!*[id^=Id_p||id_dz||=ocenka]*/!*").empty();
читать так : отобрать все div и отфильтровать те, у которых id начинается с Id_p, или id_dz, или ocenka. было бы благородно. вроде нету, да? |
Цитата:
|
Наконец-то разобрался совсем что хотел.
Буду двигаться дальше .. А вам Огромное Спасибо!!! очень сильно мне помогли без вас еще бы месяц разбирался :))) |
Начал двигаться и вот тебе опять
взял скрипт Построение Графика
var myData = new Array(['Петя', 69.5], ['Вася', 2.8], ['Маша', 5.6], ['Саша', 2.8], ['Жопа', 14.6], ['Светлана', 2.7], ['Кирилл', 1.9]);
var colors = ['#FA5E1F', '#FDCB3F', '#71D743', '#D23333', '#BAE73F', '#AB7B55', '#B381C9'];
var myChart = new JSChart('graph', 'bar');
myChart.setDataArray(myData);
myChart.colorizeBars(colors);
myChart.setTitle('Электронная система учета успеваемости');
myChart.setTitleColor('#8E8E8E');
myChart.setAxisNameX('ученик');
myChart.setAxisNameY('%');
myChart.setAxisColor('#c6c6c6');
myChart.setAxisWidth(1);
myChart.setAxisNameColor('#9a9a9a');
myChart.setAxisValuesColor('#939393');
myChart.setAxisPaddingTop(60);
myChart.setAxisPaddingLeft(50);
myChart.setAxisPaddingBottom(60);
myChart.setTextPaddingBottom(20);
myChart.setTextPaddingLeft(15);
myChart.setTitleFontSize(11);
myChart.setBarBorderWidth(0);
myChart.setBarSpacingRatio(50);
myChart.setBarValuesColor('#737373');
myChart.setGrid(false);
myChart.setSize(500, 321);
myChart.setBackgroundImage('img/chart_bg.jpg');
myChart.draw();
Все работает все хорошо Естественно хочу засунуть вместо myData свой массив забираемый с сервера, но вот не задача скорее всего в том что я не правильно вставляю запрос.... Пока не меняю ни чего просто делаю ajax запрос но переменную data не подставляю, хочу чтобы просто выполнялся запрос и график был на странице, а он у меня пропадает из за какой то ошибки <div id="graph">graph</div>
<script type="text/javascript" src="sources/jscharts.js"></script>
<script type="text/javascript">
$("#graph").click(function(){
var a = $("#datepicker").val();
var b = <?php echo $myrow['id_user']; ?>
$.ajax({
type: "POST",
url: "http://localhost/dnevnik/test.php",
data: ({a:a,b:b}),
beforesend: alert("Отправляемые данные a=" +a+ "b="+b),
success: function(data){alert(data);}
});
});
},complete: function() {
var myData = new Array(['Петя', 69.5], ['Вася', 2.8], ['Маша', 5.6], ['Саша', 2.8], ['Жопа', 14.6], ['Светлана', 2.7], ['Кирилл', 1.9]);
var colors = ['#FA5E1F', '#FDCB3F', '#71D743', '#D23333', '#BAE73F', '#AB7B55', '#B381C9'];
var myChart = new JSChart('graph', 'bar');
myChart.setDataArray(myData);
myChart.colorizeBars(colors);
myChart.setTitle('Электронная система учета успеваемости');
myChart.setTitleColor('#8E8E8E');
myChart.setAxisNameX('ученик');
myChart.setAxisNameY('%');
myChart.setAxisColor('#c6c6c6');
myChart.setAxisWidth(1);
myChart.setAxisNameColor('#9a9a9a');
myChart.setAxisValuesColor('#939393');
myChart.setAxisPaddingTop(60);
myChart.setAxisPaddingLeft(50);
myChart.setAxisPaddingBottom(60);
myChart.setTextPaddingBottom(20);
myChart.setTextPaddingLeft(15);
myChart.setTitleFontSize(11);
myChart.setBarBorderWidth(0);
myChart.setBarSpacingRatio(50);
myChart.setBarValuesColor('#737373');
myChart.setGrid(false);
myChart.setSize(500, 321);
myChart.setBackgroundImage('img/chart_bg.jpg');
myChart.draw();
}
});
});
|
дубль
|
| Часовой пояс GMT +3, время: 08:56. |