2014-03-26 15 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才能得到您的結果。沒有必要再解析。

相關問題