给this.replace的jQuery param()函数不是一个函数

时间:2016-01-29 07:10:59

标签: javascript jquery json

我有这段代码:

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}但我得到同样的错误;

任何想法?

1 个答案:

答案 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));