Html动态内容使用Ajax
问题描述:
我是一个web开发新手,刚开始学习ajax请求和动态内容创建。Html动态内容使用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> "+
dict.get('itemId') + " " +
dict.get('active_deals') + " DEAL <br/>" +
dict.get('popularity') + ". POPULAR BRAND <br/>" +
"<img src='resources/list_break.png' /><br/>" +
"</div>";
}
dict.get(“ITEMID”)是长(26位)作为一个字符串。当我点击一行时,'callJs'函数会触发,但会发生一个奇怪的问题。我的长长如一串成为龙,例如:
row id --> 85511111031103236921544356 ,
in function I see, row id --> 8551111103110325e+25
我的字符串变成龙,我无法理解。我也检查了我的解析器返回正确的值。我认为动态创建的行的单击函数将字符串转换为long。
function callJs(itemId) {
alert(itemId); // prints 8551111103110325e+25
alert(itemId.toString()); // prints 8551111103110325e+25
}
正如你看到的,在迭代循环,我打印每行的itemId,打印正确的价值(85511111031103236921544356):
我找不到任何地方的任何解决方案。我想将每行的id传递给我的函数。
任何解决方案让我很高兴..提前
谢谢..
答
在这一行:
"onclick='callJs("+ dict.get('itemId') +");'>" +
的生成HTML看起来像这样:
"onclick='callJs(11111112222222);'>"
因此,使用整数参数调用callJs
。
您需要更改线路是这样这样的:产生
"onclick='callJs(\""+ dict.get('itemId') +"\");'>" +
,这将导致在这个HTML:
"onclick='callJs("11111112222222");'>"
这里,callJs
被称为一个字符串论据。
通常,在生成动态HTML时,必须确保HTML格式正确。大多数情况下,这意味着要检查数据周围是否有字符'
和"
,这些字符应该被解释为字符串,并确保这些字符不会出现在错误的位置(例如字符串中间)。
有工具可以帮助你做到这一点。例如,请参阅firefox的firebug,或其他浏览器中的各种内置工具。
答
我认为问题在于如何构建您的呼叫。只要改变这一点:
"onclick='callJs('"+ dict.get('itemId') +"');'>" +
看引号(' “+这里” ')+
你是快,呵呵 – 2012-01-12 12:25:05
它的工作原理,谢谢! – barisatbas 2012-01-12 12:27:42
我只是指出缺少的引号,这个答案更好地解释了为什么你需要引号 – 2012-01-12 12:32:32