JavaScript字符串变量

问题描述:

我从一个Ajax调用接收一个JSON字符串,并希望将值转换为一个预定义变量:JavaScript字符串变量

var predefined = "hello world"; 
var foo = {"msg":"predefined"}; // JSON string 

我想回声出标准字符串访问它

alert(foo.msg) 

编辑:使答案在这里更加清晰是我的电话:

var success_msg = "Your email is send successfully!"; 

$.ajax({ 
    url: "ajax-share-email.php", 
    type: "POST", 
    dataType: "json", 
    data: {}, 
    success: function(data) { 
     if (data.status == "success") { 
      msg.text(data.msg).addClass("email-msg-success");     
     } else { 
      msg.text(data.msg).addClass("email-msg-error"); 
     } 
    } 
}) 

Ajax的股份email.php回答:

{"status":"success", "msg":"success_msg"} 
+5

为什么不继续在服务器端预定义的消息,并只发送实际的消息? – tvanfosson 2011-01-09 15:00:26

+1

@tvanfosson也许保持JSON很小。 – Hemlock 2011-01-09 15:08:46

+0

我正在重新考虑这一点,欢呼! – FFish 2011-01-09 15:10:16

var strings = {"predefined":"hello world"}; 
alert(strings[foo.msg]); 

或例如

var messages = {}; 
messages.success_msg = "Your email is send successfully!"; 

// ... 
      msg.text(messages[data.msg]).addClass("email-msg-success");    

 
var predefined = "hello world"; 
var foo = {"msg":predefined}; // JSON string 
alert(foo.msg) 

var out = eval(foo.msg); // out is now "hello world" 

注:请不要使用eval()如果你不知道什么foo.msg内容。

var out = foo.msg=="predefined" ? predefined : foo.msg; 

IFF我明白你问什么,我想我所有的作品在这里。

你有一个变量predefined并希望能够返回,在你的JSON和已经得到的分析对象包含predefined

JSON.parse值将不会为你工作(至少不能在Chrome ),但eval会。

var predefined = "Hi! I'm predefined"; 
// ... 

var json = '{"foo": predefined}'; // notice no quotes 
var response = eval("(" + json + ")"); 
alert(response.foo); 

这个怎么样 - 只需使用成功的消息,内联和甚至不打扰使它成为JSON的一部分。发生错误时,请包括整个消息并直接使用它。另外,我有你的服务器返回类似:

{ "status": true } 

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

然后,你可以评估它作为一个布尔值,而不相对于一个字符串值。

$.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"); 
     } 
    } 
}); 

如果,且仅当您开始重用你的邮件执行多种功能,然后重构为消息字典,并从那里引用它。请注意,您的messages对象可能需要是全局变量,或者至少在所有使用它的函数的外部范围内。

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