how to assign variable value as variable name in a hash?

后端 未结 3 1955
后悔当初
后悔当初 2020-12-16 11:32

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\',\'         


        
相关标签:
3条回答
  • 2020-12-16 12:12

    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 */ });
    
    0 讨论(0)
  • 2020-12-16 12:16
    var setname = 'set_1', 
        elements = {};
    
    elements[setname] = ['beer','water','wine'];
    
    0 讨论(0)
  • 2020-12-16 12:35

    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.

    0 讨论(0)
提交回复
热议问题