Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 给出this.replace的jQuery param()函数不是函数_Javascript_Jquery_Json - Fatal编程技术网

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