2014-03-26 17 views
1

我将一些字符串消息作为Json对象传入视图中。MVC:从控制器中检索传入的Json对象时,JavaScript错误

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

难道我做错了什么?

+1

控制台存在于‘数据’的值,并在这里分享它,想知道传递给这个'done()'函数的内容。 – Yasser

+0

@ Biplov..can你张贴您的查看代码? –

+0

你的意思是发送回应?如果是,那么这就是我在浏览器“{”error“:”somemessage“}'中看到的响应。如果不是,我可能不明白你的意思,对不起。相当新的这个前端的东西 – Cybercop

回答

1

变量类型被检测为json对象。

var x = {"error":"somemessage"}; 
alert(x.error) 

变量在此处被检测为字符串。

var x = JSON.parse('{"error":"somemessage"}'); alert(x.error)

如果注意到,不同的是#1开始于{(花括号),而#2开始于“(撇号)

2

如果执行下面的代码行

var a = { success : "success" }; 
var b = JSON.parse(a); 

你会得到你所提到的有关该错误“语法错误:意外的令牌的...”

不知道为什么你想使用JSON.parse()来转换已经存在的JSON对象,您可以使用这个

a.success 

来读取“成功”值。

0

尝试不解析答案(所以删除“JSON.parse(data)”行)并直接从“data”变量中读取所有内容。

0

您必须使用data.sucess才能得到您的结果。没有必要再解析。

相关问题