javascript string to variable

后端 未结 5 1627
星月不相逢
星月不相逢 2020-12-21 04:26

I am receiving a JSON string from an ajax call and would like to convert a value to a predefined variable:

var predefined = \"hello world\";
var foo = {\"msg         


        
相关标签:
5条回答
  • 2020-12-21 04:45
    var strings = {"predefined":"hello world"};
    alert(strings[foo.msg]);
    

    or e.g.

    var messages = {};
    messages.success_msg = "Your email is send successfully!";
    
    // ...
                msg.text(messages[data.msg]).addClass("email-msg-success");             
    
    0 讨论(0)
  • 2020-12-21 04:51

    IFF I understand what you are asking, I think I have all of the pieces here.

    You have a variable predefined and you want to be able to return that in your json and have the resulting parsed object contain the value in predefined

    JSON.parse will not work for you (at least not in Chrome), but eval will.

    var predefined = "Hi! I'm predefined";
    // ...
    
    var json = '{"foo": predefined}'; // notice no quotes
    var response = eval("(" + json + ")");
    alert(response.foo);
    
    0 讨论(0)
  • 2020-12-21 05:01
    var out = eval(foo.msg); // out is now "hello world"
    

    Note: do not use eval() if you are not sure what the content of foo.msg is.

    or

    var out = foo.msg=="predefined" ? predefined : foo.msg;
    
    0 讨论(0)
  • 2020-12-21 05:04
    var predefined = "hello world";
    var foo = {"msg":predefined}; // JSON string
    alert(foo.msg)
    

    ?

    0 讨论(0)
  • 2020-12-21 05:06

    How about this -- just use the message inline on success and don't even bother to make it part of the JSON. On an error, do include the entire message and use it directly. Also, I'd have your server return something like:

    { "status": true }
    

    or

    { "status": false, "msg": "The mail server is down." }
    

    Then you can just evaluate it as a boolean without comparing it to a string value.

    $.ajax({
        url: "ajax-share-email.php",
        type: "POST", 
        dataType: "json", 
        data: {},
        success: function(data) {
            if (data.status) {
                msg.text('Your email has been sent successfully!').addClass("email-msg-success");                   
            } else {
                msg.text(data.msg).addClass("email-msg-error");
            }
        }
    });
    

    If, and only if, you start reusing your messages for multiple functions, then refactor to a message dictionary and reference it from there. Note your messages object would likely need to be a global variable, or at least in the outer scope of all the functions that use it.

     var messages = {};
     messages.mail_success = 'Your email has been sent successfully!';
     messages.post_success = 'Your data has been updated!';
    
    $.ajax({
        url: "ajax-share-email.php",
        type: "POST", 
        dataType: "json", 
        data: {},
        success: function(data) {
            if (data.status) {
                msg.text(messages.mail_success).addClass("email-msg-success");                   
            } else {
                msg.text(data.msg).addClass("email-msg-error");
            }
        }
    });
    
    0 讨论(0)
提交回复
热议问题