如何在javascript函数中传递JSON对象作为函数参数?

时间:2014-04-13 09:06:55

标签: javascript jquery json

在我的js函数中,我创建了a div and a link,当点击链接时,我会将参数传递给另一个js函数?我的代码出了什么问题?

js function1

 //pass a json:the browser show wrong:SyntaxError: missing ] after element list
 //passJson([object Object])
 var dataItem=getDataItem();//a json object which has title and name property
 var divStr="<div><a style='cursor: pointer' onclick='passJson(" + dataItem +")'><span title='spantitle'><i class='icon-mouse'></i></span></a>;</div>";

所以我尝试添加&#34; []&#34;功能,但它仍然显示错误。

js function2

 //pass a json:the browser show wrong:SyntaxError: missing ] after element list
 //passJson([object Object])
 var dataItem=getDataItem();// a json object which has title and name property
 var divStr="<div><a style='cursor: pointer' onclick='passJson([" + dataItem +"])'><span title='spantitle' ><i class='icon-mouse'></i></span></a>;</div>";

2 个答案:

答案 0 :(得分:4)

通常,您不会将其称为JSON对象。你只需称它为JavaScript对象。

代码的方式,您不需要进行字符串连接。你可以像

一样onclick='passJson(dataItem)'

http://jsfiddle.net/6LzCA/5/

function passJson(obj) {
    console.log(obj);
}

var dataItem={ title: "hello", name: "snoopy" }; //a json object which has title and name property

var divStr="<div id='foo'><a style='cursor: pointer' onclick='passJson(dataItem)'><span title='spantitle'><i class='icon-mouse'></i>hmmm</span></a>;</div>";

$("body").append(divStr);

当您点击“hmmm”链接时它会起作用。

您可能希望单独添加标记,然后将点击处理程序绑定到链接,因为通常情况下,我们希望采用unobtrusive JavaScript的方法。

答案 1 :(得分:2)

function passJson(data) {
  console.log(data); 
}
function getDataItem (){
 return {'title':'mytitle','name':'helloName'}; 
}
$(document).ready(function(){
  var dataItem=getDataItem();// a json object which has title and name property
  dataItem = JSON.stringify(dataItem);
  var divStr="<div><a style='cursor: pointer' onclick='passJson("+dataItem+")'>       hello clik me<span title='spantitle'><i class='icon-mouse'> </i> </span></a>;</div>";
 $('body').html($(divStr));
});