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来获取结果。 无需再次解析。