Многомерный массив как вывести данные на страничку
Получаю данные с сервера (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, время: 23:56. |