I need to define a hash for posting some ajax data using jQuery. The hash will look something like:
var setname = \'set_1\';
elements = { set_1: {\'beer\',\'
You have to understand that there's really no such thing as "JSON notation" in Javascript - it's native Javascript notation that we're talking about. What jQuery wants is a Javascript value for the POST data, not necessarily a Javascript object constant.
Thus, your code will prepare your POST data like this:
var elements = {};
elements[setName] = { /* something */ };
elements[somethingElse] = { /* something else */ };
and so on. When you're ready to do the POST, you'd just use "elements":
$.post(url, elements, function() { /* callback code */ });
var setname = 'set_1',
elements = {};
elements[setname] = ['beer','water','wine'];
You can do what you'd like to like so:
var setname = 'set_1', elements = {};
elements[setname] = ['beer','water','wine'];
alert(elements['set_1']); // beer,water,wine
See this in action at http://jsfiddle.net/x5KRD/.
All objects in JS can be accessed using dot notation (obj.method()
or obj.property
), or bracket notation (obj['method']()
or obj['property']
). Using bracket notation lets you dynamically specify method/property/key names.
For example, while clumsy, window['alert']('hi')
is equivalent to window.alert('hi')
.
Note that your code won't work as-is, anyways, because you're using object literal notation ({'beer','water','wine'}
) to contain an array (it should be in square brackets ['beer','water','wine']
instead). Object literals need to have key-value pairs.