MVC:在视图中从控制器检索传递的Json对象时,JavaScript错误
我在视图中传递了一些字符串消息作为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");
但之后没有警报。 我在控制台中收到错误
难道我做错了什么?
变量类型被检测为json对象。
var x = {"error":"somemessage"}; alert(x.error)
该变量在此处被检测为String。
var x = JSON.parse('{"error":"somemessage"}'); alert(x.error)
如果你注意到,差异是#1以{(花括号)开头,而#2以’(撇号)开头
如果您执行以下代码行
var a = { success : "success" }; var b = JSON.parse(a);
你会得到你提到的关于“SyntaxError:Unexpected token o …”的错误
不知道你为什么要尝试使用JSON.parse()转换已经存在的JSON对象,而是可以使用它
a.success
阅读“成功”的价值。
尝试不解析答案(因此删除“JSON.parse(data)”行)并直接从“data”变量读取所有内容。
您必须使用data.sucess
来获取结果。 无需再次解析。