MVC:在视图中从控制器检索传递的Json对象时,JavaScript错误

时间:2014-03-26 08:31:47

标签: javascript jquery asp.net-mvc json

我在视图中传递了一些字符串消息作为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");但之后没有警报。 我在控制台中收到错误

enter image description here

我做错了吗?

4 个答案:

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