2014-12-20 14 views
2

ASP.NET Web Api函數返回JSON中的簡單字符串。

當我打電話從angularjs這個功能,我得到一個引用的字符串,而不是一個簡單的字符串:

return $http.post('/api/orders', data).then(function (results) { 
     return result.data; 

result.data是"my string",用引號。這是因爲返回的消息是一個字符串原語,而不是一個對象。如何處理它呢?使用js函數刪除引號?強制服務器返回一個對象而不是原始的?一些特殊的配置? ...?

UPDATE:

服務器使用網絡API控制器,它返回一個字符串:

public IHttpActionResult SaveOrder() {return Ok("this is a test");} 

它具有相同的結果:

public string SaveOrder() {return "this is a test";} 

問題是返回的JSON值不是一個對象,它直接是字符串原語。

+0

做你配置了你的'asp.net web api'來返回'json'?它會幫助,如果你包括你的服務器端邏輯 –

+0

我們已經在服務器端多次看到這一點,並不得不調整字符串的刪除... – rfornal

+0

在我看來,它會更好地返回對象(至少一年前我無法配置服務器,我花了大約20分鐘的時間,並決定使用對象)。所以對我來說這也是一個有趣的問題;) – user2700840

回答

2

我有同樣的問題。這是因爲你是從你的控制器返回string,我認爲它看起來是這樣的:

public string ControllerMethod(..) {...} 

您應該返回HttpResponseMessage代替string,並且對象將是這樣的:

public HttpResponseMessage ControllerMethod() 
{ 
    var myString = "my string"; 
    return new HttpResponseMessage() 
    { 
     Content = new StringContent(myString, Encoding.UTF8, "text/html") 
    }; 
} 
+0

爲了避免創建響應消息,您可以簡單地返回一個IHttpActionResult,然後執行:return Ok(「my string」);'。這將爲你做內容談判。 – peco

+0

'retun好的(「我的字符串」)'有同樣的問題,我暴露。正是Omri使用HttpResponseMessage來避免這個問題。 –

+0

@DabielKabuto你還有問題嗎? –