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"}
答
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");
}
}
});
为什么不继续在服务器端预定义的消息,并只发送实际的消息? – tvanfosson 2011-01-09 15:00:26
@tvanfosson也许保持JSON很小。 – Hemlock 2011-01-09 15:08:46
我正在重新考虑这一点,欢呼! – FFish 2011-01-09 15:10:16