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
来获取结果。 无需再次解析。
- 加载选择列表时,在JQuery中使用json数据填充selectlist(不是文档)
- 如何在没有使用jQuery的MultiSelectBox的情况下在ASP MVC中实现EF多对多的关系?
- Url.Action:如何将参数从View传递给Controller?
- AJAX请求不被识别
- 发送POST请求时无效的JSON原语
- Asp.net MVC FileContentResult – 阻止在浏览器中打开
- 当我们只选择图像时,改变JavaScript图像comboboxv3.3的宽度
- jquery split()和indexOf导致“Object不支持此属性或方法”
- 如何实现必需的validation以检查用户是否输入至少一个值