IE tries to download JSON in ASP. NET MVC 3

asp.net-mvc, asp.net-mvc-3, javascript, json

Solution

I've solved that with this trick

return Json(new { success = false, message = ex.Message }, "text/html");

And now it works. But can me anyone explain why it works with text/html, and didn't work with application/json and text/plain. First is trying to download JSON and second is returning undefined properties for JSON fields.

Problem

I was trying to return Json from my action and after that IE tried to download it and showed me save dialog. I tested it in Firefox, and there it works fine. ``` return Json(new { success = false, message = ex.Message }, "application/json"); ``` What is the reason of that behavior and how can I solve that issue? After that in Javascript part I try this ``` if (responseJSON.success == false) { alert(responseJSON.message); cancel(); } ``` But IE doesn't show alert anyway. It brings me save dialog. I tried to change `"application/json"` with `"text/plain"` and save dialog disappeared, but I am not able to see alert yet. What am I missing? EDIT: Here is my complect Javascript, I am using Valums qquploader(ex-Ajaxupload) for uploading images ``` var uploader = new qq.FileUploader({ element: document.getElementById("image-upload"), action: '/Home/ImageUpload', allowedExtensions: ['jpg', 'png', 'gif'], sizeLimlit: 2048,onComplete: function (id, fileName, responseJSON) { if (responseJSON.success == false) { alert(responseJSON.message); cancel(); } else { alert("success"); //some code here } } }); ``` I had tested with `alert("success");` in my else part and forwarded json as `"text/plain"` and after that I saw the alert. But in that time `responseJSON.success != false` for me. Have you any suggestions about that?

Original source

Related problems