今天遇到一个问题
aps.net MVC+Jquery+ajaxSubmit
在ie8兼容模式下面 出现 返回json直接在客户端弹出一个下载框,不执行请求成功的的拓展方式。
var mainform = $("#form2");
mainform.ajaxSubmit({
dataType: 'script',
success: importSuccess,
beforeSubmit: function (formData, jqForm, options) {
},
beforeSend: function (a, b, c) {
LG.showLoading('正在上传...');
},
complete: function () {
LG.hideLoading();
},
error: function (result) {
LG.tip('发现系统错误 <BR>错误码:' + result.status);
}
});
控制器上传xls 返回指定格式的json
[HttpPost]
public JsonResult SMSTemplates() {
HttpPostedFileBase file= Request.Files[0];
String path = Server.MapPath("/UploadExcel/");
if (!System.IO.Directory.Exists(path))
System.IO.Directory.CreateDirectory(path);
String filePath = path + DateTime.Now.ToString("yyyyMMddhhmmss") +"_.xmls";
file.SaveAs(filePath);
DataSet data= TerpPOSLibrary.Comm.excel.ExeclTool.ExcelDataSource(filePath);
DataTable table = null;
if (data.Tables.Count > 0) {
table=data.Tables[0];
}
var message="";
var result = "0";
List<Object> list = new List<object>();
if (table != null) {
if (table.Columns["手机号码"] == null || table.Columns["姓名"] == null)
{
message = "导入的Excel格式有误,请下载模板查看格式";
result = "-1";
}
else
{
foreach (DataRow row in table.Rows)
{
if (!String.IsNullOrEmpty(row["手机号码"].ToString()))
{
var sendModel = new { SendMobile = row["手机号码"], SendName = row["姓名"] };
list.Add(sendModel);
}
}
}
}
FileInfo del_file = new FileInfo(filePath);
del_file.Delete();
var obj = new { result = result, message = message, list = list };
return Json(obj);
}
可能是你的浏览器默认不处理Application/json输出。试下在注册表中注册Json MIME类型:
[HKEY_CLASSES_ROOT\MIME\Database\Content Type\application/json]
"CLSID"="{25336920-03F9-11cf-8FD0-00AA00686F13}"
"Encoding"=dword:00080000
以上保存在.reg格式的文件中,用regedit.exe执行。
感谢您的热心,问题已经解决,十分简单
楼主怎么解决的?求解!
楼主是怎么解决的?我现在也遇到了这个问题,求解!!!
请教下楼主,怎么解决的!!
我今天也碰到同样的问题,后面是这样解决的
1、前台ajaxSubmit方法中指定dataType: "json"
2、后台Json返回方法中指定contentType为"text/plain;charset=utf-8"