Javascript 给出this.replace的jQuery param()函数不是函数
我有以下代码:Javascript 给出this.replace的jQuery param()函数不是函数,javascript,jquery,json,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
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转换为参数
它做得很好。但是,我得到一个警报(第一个)打印:
这是正确的,但随后失败,在控制台中我得到:
TypeError: this.replace is not a function
我很确定这是正确的JSON格式。我也尝试过添加引号,比如{'reportId':5},但我得到了相同的错误
有什么想法吗?这是因为$.param需要一个JSON对象作为其参数,而不是一个JSON格式的字符串。所以如果你通过了这样的考试,它就会失败:
var jsonElement = '{"reportId": 5}';
var result = $.param(jsonElement); //throws exception
相反,如果您这样做:
var jsonElement = '{"reportId": 5}';
var result = $.param(JSON.parse(jsonElement));
在您的控制台中输出的数据是什么?需要一个对象,但
数据
是一个string@Andreas正确的。您的第一个警报应该返回这个[object object]
而不是这个{reportId:5}
谁是字符串。好吧,如果您确定数据的格式正确,请使用JSON.parse(data)并将其传递到jQuery.param(),也就是说,我假设数据字符串是JSON格式的字符串@歐津柏 那不是JSON。。。否则,这就是出路@mmaceachran:无论该值来自何处,都将其更改为输出有效的JSON({“reportId”:5}
)。并使用data-*
而不是自定义属性:)
var jsonElement = '{"reportId": 5}';
var result = $.param(JSON.parse(jsonElement));