2014-12-20 1 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:

Сервер использует контроллер Web 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 Ok (« моя строка »)' имеет ту же проблему, что и я. Точно Omri использует HttpResponseMessage, чтобы избежать этой проблемы. –

+0

@DabielKabuto У вас все еще есть проблемы? –

Смежные вопросы