一:HTML 中 onclick 触发函数 xxx(param) 要传递对象参数的解决方法
在HTML 拼接中,有时会用到 onclick 事件绑定函数,并要其中传递参数。
简单的参数,例如:字符串 作为参数,传递没问题
但是如果传递的参数是一个对象,则就存在问题。会出现报错!
解决方式:
将对象转为 json ,再进行传递(HTML不能直接传递对象);
js 对象转换成json对象
var json = JSON.stringify(jsObject)
json对象转成js对象
var js = JSON.parse(jsonObject);
示例:
varcontent={"name":"runoob","alexa":10000,"site":"www.runoob.com"};
js中拼接的HTML:
<a class='mui-card-link' οnclick='replyDetail("+JSON.stringify(content)+")'>Read more</a>
js中方法:
function replyDetail(content){
var js = JSON.parse(content); //json对象转换成js对象
console.log(js.name); //输出runoob
console.log(js.alexa); //输出10000
}
参考文章:
HTML 中 onclick 触发函数 xxx(param) 要传递对象参数的解决方法
二:LocalStorage存储JSON对象的问题
- localStorage.setItem() 不会自动将Json对象转成字符串形式
var obj = {"a": 1,"b": 2};window.localStorage.setItem("temp2", obj);
var result = window.localStorage.getItem("temp2");//也会返回String//但是返回[object Object]//但是console.log(result) 结果是[object Object]
- 用localStorage.setItem()正确存储JSON对象方法是:
- 存储前先用JSON.stringify()方法将json对象转换成字符串形式
JSON.stringify()
方法可以将任意的 JavaScript 值序列化成 JSON 字符串
var obj = {"a": 1,"b": 2}; obj = JSON.stringify(obj); //转化为JSON字符串 widow.localStorage.setItem("temp2", obj);//返回{"a":1,"b":2}
- 后续要操作该JSON对象,要将之前存储的JSON字符串先转成JSON对象再进行操作
var obj=JSON.parse(localStorage.getItem("temp2"));
3:ajax请求传送参数为对象问题
客户端:ajax请求
questionIdArray 是一个对象,传参是 要将对象转换json对象,网络传输。
转换方式:JSON.stringify(questionIdArray);
function loadQuestionsAnswers(){
$.ajax({
url: basePath + 'AnswersQuestions/loadQuestionsAndAnswers',
data:{
userId:window.localStorage.getItem("userId"),
questionIdArray:JSON.stringify(questionIdArray)
},
type:'POST',
success:function(data){
}
});
}
服务端:解析请求参数对象 要将json对象转换成对象 ,使用类 net.sf.json.JSONArray 的方法fromObject()实现
String questionId = request.getParameter("questionIdArray");
JSONArray questionIdArray = JSONArray.fromObject(questionId);