views:

32

answers:

4

This code works:

$(this).load($('.pageloadlabel', this).attr('href'), {category: 1});

This code doesn't work:

var data = '{category: 1}';
$(this).load($('.pageloadlabel', this).attr('href'), data);

The question is, how can I make it work? Thank you.

+2  A: 

It's not JSON, it's a javascript object.

var data = { category: 1 };

If you have a string, you would have to convert it to a object.

And notice that your string is not a valid JSON, see the link for more details.

BrunoLM
A: 

Have you tried to use eval() on data?

var data = '{category: 1}';
$(this).load($('.pageloadlabel', this).attr('href'), eval(data));
Bogdan Constantinescu
+2  A: 

Take out the quotes, the load function is expecting an object, not a string.

Mutt
+2  A: 

Your data is not a Javascript object but a string, you can convert it to object by eval e.g.

data = eval('(' + data + ')');

but eval is considered dangerous, so better to parse string as JSON e.g.

data = JSON.parse(data)

For JSON lib you can use json2

Anurag Uniyal
I was able to solve my problem using the JSON library. Thank you.
Calle