HTML динамический контент с Ajax - PullRequest
1 голос
/ 12 января 2012

Я новичок в веб-разработке, только начал изучать ajax-запросы и динамическое создание контента.

У меня нет проблем с загрузкой и анализом данных. После загрузки данных динамически я создаю несколько строк, представляющих каждый элемент массива (ответ на запрос ajax):

 for(var i=0; i< dicts.length; i++){
     var dict = dicts[i];
     div_content += "<div id='row' " + 
                         "onclick='callJs("+ dict.get('itemId') +");'>" + 
                        <b>" + dict.get('name').toUpperCase()+ "</b>&nbsp;"+ 
                        dict.get('itemId') + "&nbsp;" +
                        dict.get('active_deals') + " DEAL <br/>" + 
                        dict.get('popularity') + ". POPULAR BRAND <br/>" + 
                        "<img src='resources/list_break.png' /><br/>" +
                        "</div>"; 
  }

dict.get ('itemId') - это Long (26 цифр) в виде строки. Когда я щелкаю строку, функция callJs срабатывает, но возникает странная проблема. Моя длинная строка становится длинной, например:

row id -->  85511111031103236921544356 ,   
in function I see, row id -->   8551111103110325e+25   

моя строка превращается в длинную, я не могу понять. Я также проверил, что мой парсер возвращает правильное значение. Я думаю, что динамически созданная функция click строки преобразует строку в long.

function callJs(itemId) {
     alert(itemId); // prints  8551111103110325e+25
     alert(itemId.toString()); // prints 8551111103110325e+25
}

Как видите, в цикле итератора я печатаю itemId каждой строки, печатает правильное значение (85511111031103236921544356):

enter image description here

Я нигде не мог найти решение. Я хочу передать идентификатор каждой строки в мою функцию.

Любое решение заставляет меня так радоваться ..

Заранее спасибо ..

Ответы [ 2 ]

3 голосов
/ 12 января 2012

В этой строке:

"onclick='callJs("+ dict.get('itemId') +");'>"  +

Сгенерированный HTML будет выглядеть так:

"onclick='callJs(11111112222222);'>"

Итак, callJs вызывается с целочисленным аргументом.

Вам нужно изменить строку на что-то вроде этого:

"onclick='callJs(\""+ dict.get('itemId') +"\");'>" + 

, что приведет к генерации этого HTML:

"onclick='callJs("11111112222222");'>"

Здесь callJsВызывается со строковым аргументом.

В общем, при генерации динамического HTML вы должны убедиться, что сформированный HTML правильный.В основном это означает проверку наличия символов ' и " вокруг данных, которые следует интерпретировать как строку, и обеспечение того, чтобы эти символы не оказались в неправильном месте (например, в середине строки).

Есть инструменты, которые помогут вам в этом.Например, см. firebug для Firefox или различные встроенные инструменты в других браузерах.

2 голосов
/ 12 января 2012

Я думаю, проблема в том, как вы строите свой звонок. Просто измените это:

"onclick='callJs('"+ dict.get('itemId') +"');'>" +

Посмотрите на кавычки ( ' "+ и здесь" ' ) +

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...