我在视图中传递了一些字符串消息作为Json对象。
public ActionResult SomeAction(someObject object)
{
.....
.....
if (check1)
{
return Json(new { error = Resource.someMessage1},JsonRequestBehavior.AllowGet);
}
if(check2)
{
return Json(new { error = Resource.someMessage2}, JsonRequestBehavior.AllowGet);
}
//some stuffs
return Json(new {success = "success"}, JsonRequestBehavior.AllowGet);
}
我想检索从控制器传递的消息并从我的视图中发出警报
在视图中我有一些javascript
function done(data) {
alert("hello");
var message = JSON.parse(data);
alert(message);
if (message["error"] != undefined) {
alert(message["error"]);
} else {
//do some stuff
}
};
我所期待的是,如果来自控制器的传递消息是类型错误,那么我会收到消息警告。
行alert("hello");
但之后没有警报。
我在控制台中收到错误
我做错了吗?
答案 0 :(得分:2)
如果执行以下代码行
var a = { success : "success" };
var b = JSON.parse(a);
你会得到你提到的错误"语法错误:意外的令牌o ..."
不知道为什么要尝试使用JSON.parse()转换已经存在的JSON对象,而不是使用此
a.success
阅读"成功"价值。
答案 1 :(得分:1)
变量类型被检测为json对象。
var x = {"error":"somemessage"};
alert(x.error)
此变量在此处被检测为String。
var x = JSON.parse('{"error":"somemessage"}');
alert(x.error)
如果你注意到,差异是#1以{(花括号)开头,而#2以'(撇号)开头
答案 2 :(得分:0)
尝试不解析答案(因此删除“JSON.parse(data)”行)并直接从“data”变量读取所有内容。
答案 3 :(得分:0)
您必须使用data.sucess
来获得结果。无需再次解析。