2014-11-10 4 views
0

У меня есть действия контроллера, как это (очень упрощенный):JsonResult интерпретируется как строка в браузере

[HttpPost] 
public JsonResult Submit() 
{ 
    Response.StatusCode = Convert.ToInt32(HttpStatusCode.BadRequest); 
    return new JsonResult 
    { 
     ContentEncoding = Encoding.Default, 
     ContentType = "application/json", 
     Data = new {error = "xxxxxxxxxx"} 
    }; 
} 

Дело в том только, что я хочу вернуться JSON, но результат в браузере строку. Вот это свойство из возвращенного объекта: enter image description here

Чтобы использовать это сейчас, я должен сделать что-то вроде JSON.Parse, и я не хочу этого. Действие контроллера должно просто вернуть json самостоятельно.

Я ранее видел свойство responseJSON на объекте результата из запроса ajax в JavaScript.

EDIT: Я использую плагин формы jQuery, поэтому технически это тот, кто делает запрос. Вот код, где я инициализировать JQuery Form Plugin:

function initializeAjaxForm() { 
    var feedback = document.getElementById('feedback'); 
    $('#upload-form').ajaxForm({ 
     url: '/xxxx/Submit', 
     type: 'POST', 
     beforeSubmit: handleBeforeSubmit, 
     beforeSerialize: handlePreSerialize, 
     success: function (data) { 
      stopLoadingGif(); 
      feedback.innerHTML = 'Yay!'; 
      console.log(data); 
     }, 
     error: function (data) { 
      debugger; 
      console.log(data); 
      stopLoadingGif(); 
      feedback.innerHTML = 'Nay!'; 
     } 
    }); 
} 

Вот запрос в браузере:

enter image description here

EDIT 2: Вот заголовки ответа:

enter image description here

EDIT3:

Это, похоже, проблема в обработчике ошибок.

+0

В результате в браузере является переменной Javascript. Это действительно поможет, если вы покажете нам, как вы вызываете контроллер из вашего клиентского кода. –

+0

что вы используете в 'Content-Type' и' Data-Type' в вашем jquery-вызове? Поместите ваш синтаксис вызова jquery в свой вопрос. –

+0

Просьба поделиться ссылкой на ваш Javascript – Tushar

ответ

1

возвращение JSON объект не JSONResult как это:

return Json(new { error = "xxxxxxxxxx"},JsonRequestBehavior.AllowGet); 

Посмотрите this article

+0

Я не могу заставить это работать. Думаю, мне просто нужно использовать 'JSON.parse', так как у меня не весь день. – ptf

+1

Таким образом, вы станете объектом json, вам не нужно преобразовывать его в JSON –

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