我有这段代码:
function parseContent(targetDiv) {
$("#"+targetDiv+" > [contentName]").each(function (index) {
var data = $(this).attr("contentData");
if(data != undefined) {
alert(data);
alert(jQuery.param(data));
}
})
}
它解析一些html并查找contentName作为其中的属性的元素。对于其中的每一个,检查是否存在属性contentData,如果是,则将json转换为参数。
它正在做每个()就好了。但是我得到一个警告(第一个)打印:
{reportId : 5}
这是正确的,但后来失败了,在控制台中我得到了:
TypeError: this.replace is not a function
我很确定这是正确的JSON格式。我已尝试添加引号,例如{' reportId':5}但我得到同样的错误;
任何想法?
答案 0 :(得分:1)
这是因为$ .param需要一个JSON Object作为参数,而不是一个格式化为JSON的字符串。所以如果你传递这样的东西,它就会失败:
var jsonElement = '{"reportId": 5}';
var result = $.param(jsonElement); //throws exception
相反,如果你这样做:
var jsonElement = '{"reportId": 5}';
var result = $.param(JSON.parse(jsonElement));