Получения 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, время: 10:17. |