Получения ID по onclick
Помогите пожалуйста! Проблема такова:
есть массиы приходящие с сервера в виде каталога. При клике беру ID кликнутой строки и подставляю его в следующий запрос, таким образом перехожу в подкоталог. Все бы ни чего, но при переходе в еще на один уровень ниже нужно взять следующий кликнутый ID+ParentID, а наверно в памяти остается уже ненужный ID первого вызова, т.к. происходит это в Ajax. Теперь код: var requestUrl = 'https://api2.mysite.ru?json'; var request = { key: '0000', method: 'Catalogs' }; var data = 'data=' + JSON.stringify(request); $.ajax({ url: requestUrl, type: 'POST', dataType: 'json', data: data }) .done(function(data) { for (json in data) { document.write('<li class="cat" ID="' + data[json].id + '" ParentID="' + data[json].parent_id + '" ><button class="catalog">' + data[json].name + '</button></li>') $(function(){ $(".cat").on('click',function(event) { // кликаем по списку получаем ID и ParentID $("li.cat").remove(); //удаляем список })})}}) // вазываем следующий ур.(эдентичный запрос. отличие в var request{params}) var requestUrl = 'https://api2.mysite.ru?json'; var request = { key: '0000', method: 'PodCatalogs', params: { catalog_id : this.ParentID, // ? как мне четко прописать откуда я это взял(уровни отличаются только классом) section_id : this.ID, // ? как мне четко прописать откуда я это взял(уровни отличаются только классом) }; var data = 'data=' + JSON.stringify(request); $.ajax({ url: requestUrl, type: 'POST', dataType: 'json', data: data }) .done(function(data) { for (json in data) { document.write('<li class="PodCat" ID="' + data[json].id + '" ParentID="' + data[json].parent_id + '" ><button class="catalog">' + data[json].name + '</button></li>') $(function(){ $(".PodCat").on('click',function(event) { // кликаем по списку получаем ID и ParentID $("li.PodCat").remove(); //удаляем список })})}}) Надеюсь понятно изложена суть. Если что переспрашивайте. Спасибо! |
Цитата:
|
Да, я читал. Но при смене метода массив не отображается. Спасибо за ответ! А что бы вы посоветовали использовать вместо document.write, просто это мой первый скрипт.
|
ghostcom,
http://learn.javascript.ru/multi-insert и в jquery с десяток методов от .html() до .append() |
ghostcom,
var data = 'data=' + JSON.stringify(request); это лишнее |
Цитата:
|
//это код, который должен заменить document.write на месте document.write = function(s) { var scripts = document.getElementsByTagName('script'); var lastScript = scripts[scripts.length - 1]; lastScript.insertAdjacentHTML("beforebegin", s); }//конец Это позволяет запись в DOM без перезаписи страницы. Где то на сайтах нашол. |
Сейчас буду все заново пробовать. Попозже отпишусь.Спасибо!!!
|
Цитата:
|
$("div").html('<li class="cat" ID="' + data[json].id + '" ParentID="' + data[json].parent_id + '" ><button class="catalog">' + data[json].name + '</button></li>') Такой код выводит только последний элемент массива, подскажите как прикрутить цикл? Мне бы этот вариан как нельзя к стати) как раз нужен еще div. |
Цитата:
|
Просто надо вместо html использовать append!!!!
|
Спасибо Рони! Это лучший форум!
|
В общем перепробовал массу разных методов и не смог отобразить информацию должным образом! Вернулся опять к разбитому карыту и document.write. При чем и это не работает толком (см. 1 пост) и по этому опять поднимаю вопрос по ID в самом начале темы!!! Приму любую полезную информацию т.к. опять в тупике.:cray:
|
И кстати append почему то игнорирует $(".cat").on('click',function(event)
и выводит сразу все уровни. Такой бардак получается div в div'e и на диве- ужас) как бы правильно прописать чтоб работало по клику? КОД В ПЕРВОМ ПОСТЕ! |
ghostcom,
:-? сложно понять что делает ваш код и ещё непонятнее понять что вам непонятно. |
Мой код выводит каталог товаров поставщика полученый в виде масива.
По клику отправляю запрос на какой нибудь подкаталог и т.д. Чтоб отправить запрос нужно в переменной прописать ID и родительский ID полученные из предидущего массива. Два уровня вывожу последующие не могу. Не знаю как обьяснить лучше, sorry. |
ghostcom,
ок но пас |
Еще вопросик, опять мучаюсь с append вроде есть сдвиг но,
Вопрос: Допустим есть разные запросы к серверу как им присвоить имена чтоб можно было обращаться по отдельности. я сделал так function name_a(){здесь мой код} а вызываю так name_a.apply(this); с document.write это работало( можно ссылочку на чтиво. как правильно групировать свой код или как оно правильно называется не знаю. Поэтому не могу через поиск найти что нужно) |
ghostcom,
нечего мне вам пока сказать ... |
ghostcom,
может вам тут помедитировать http://www.jstree.com/ |
не хочу показаться навязчевым, но деваться не куда без советов не справлюсь.
Пытаюсь вывести несколько значений одного обьекта, выводит только одно document.write('<li class="cat" id="' + data[json].id + '" parent_id="' + data[json].parent_id + '" ><button class="subsections">' + data[json].name + '</button></li>') $(function(){ $('.cat').click(function(event){ var parent_id = this.parent_id; var id = this.id; }) }) alert(this.id,this.parent_id) id выводит, а parent_id не могу как бы не прописывал. пробовал с attr var parent_id = $(this).attr('parent_id') и опять id есть а parent_id нет!? WTF. Подскажите как взять два значения, а то и три??? Может команда с var id прописана в библе поэтому и работает, а остальное не хочет(jquery-1.11.2.js) |
ghostcom,
почему alert в строке 8 а не 5 document.write -- кактус - мыши кололись но ели this.parent_id нет такого свойства <!DOCTYPE HTML> <html> <head> <title>Untitled</title> <meta charset="utf-8"> <style type="text/css"> </style> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script> </head> <body> <script> var json = 0, data = [{ id: 2000, parent_id: 5000, name: 'test' }] document.write('<li class="cat" id="' + data[json].id + '" parent_id="' + data[json].parent_id + '" ><button class="subsections">' + data[json].name + '</button></li>') $(function() { $('.cat').click(function(event) { var parent_id = $(this).attr('parent_id'); var id = this.id; alert([id, parent_id]) }) }) </script> </body> </html> |
Спасибо, но я так и делаю. Почему в моем документе не работает:blink:
А можно рони вам в личку мой код кинуть? |
А подскажите возможно ли как то отчистить или делать сброс ячеек хранящих эти значения??
|
Цитата:
|
ghostcom,
может с азов начать -- как вставить элемент без jquery и document.write |
Цитата:
|
Цитата:
|
Чтоб темы не плодить спрошу здесь
{ "models": [ { "key": 5268, "name": "Heart", "photo": { "code": "10839", "width": 800, "height": 601 } } ], "items": { "010": { "article": "010", "id": "89", "name": "gavs", }, } } как такой массив выводить? Интересует только сама структура + data?[json?].??? + var requestUrl = 'https://ссссс?json'; var request = { auth_key: 'ссссссс', params: { page : 1, limit : 20, } }; var data = 'data=' + JSON.stringify(request); $.ajax({ url: requestUrl, type: 'POST', dataType: 'json', data: data }) .done(function(data) { for (json in data) { var tr = document.getElementsByClassName("tr_items")[0]; var docfrag = document.createDocumentFragment(); var itemName = ['' + data[json].items.article + '']; // не работает /*var photo = [''];*/ itemName.forEach(function(e) { var td = document.createElement("td"); td.setAttribute("class", "itemName"); td.setAttribute("id", ' + data[json].id + '); // не работает td.textContent = e; docfrag.appendChild(td); }); tr.appendChild(docfrag); } |
Цитата:
if (json == "items"){ var obj = data[json]; for (var k in obj) { if (obj[k]["article"]) {var itemName = obj[k] ["article"];} } } примерно так |
Цитата:
|
туплю, не могу вывести:D
а можно ваш код в мой вставить) |
Цитата:
|
ghostcom,
какую структуру вы хотите получить, html? |
сорри, не было время ответить.
в общем сделал так for (var i in data.items) {} + data.items[i].article + + data.items[i].id + + data.items[i].name + массив был такого вида { "models": [ { "key": 5268, "name": "Heart", "photo": { "code": "10839", "width": 800, "height": 601 } } ], "items": { "010": { "article": "010", "id": "89", "name": "gavs", }, } } |
все хорошо, но опять не достаток знаний. гугл не помог.
делаю аякс запрос с двумя переменными получаю ошибку синтаксиса var requestUrl = 'https://api2.site.ru?json'; var request = { auth_key: '2232223', method: 'getS', params: { items: { articleI : + articleII, // 1-ая и 2-ая переменная. проблема с первой!!!? }}}; var data = 'data=' + JSON.stringify(request); $.ajax({ url: requestUrl, type: 'POST', dataType: 'json', data: data }) Игрался с "",'',(),{},[] и т.д. либо в запросе txt 'articleI', либо в js - error(синтаксис). ну ведь должен быть какой то способ??? |
Часовой пояс GMT +3, время: 18:40. |