jquery.ajax,post等方法在firefox与其他浏览器的区别
2015-10-30 13:57客户端用jquery.post和jquery.ajax请求内容,asp.net mvc服务器端用Content返回文本内容时候,firefox和chrome,ie等浏览器的结果不同。firefox返回的是XmlDocument对象,chrome和ie都是字符串。
比如
$.post('@Url.Action("EditAnswer")' , { QuestionId: $div.get(0).id.substr(2), Content: $div.find('.wan_s').val(), CreateUser: 0 } , function (data) { if (data) alert(data); else reload(); });
服务器端代码
public ActionResult EditAnswer(AnswerAddRequest request) { if (LoginUser == null) return Content("请先登录"); ErrorCodeEnum? error; request.CreateUser = LoginUser.UNID; if (new AnswerBLL().EditAnswer(request, out error) > 0 || error == null) return Content(""); return Content(error.Value.GetDescription()); }
ie和chrome都正常。firefox下,不论用户是否已经登陆,客户端都会出现内容“[object XMLDocument]”的alert对话框。
解决办法 jquery.post和jquery.ajax都带上dataType参数,比如dataType:'html'。上面的代码修改为
$div.find('a.jixu_r').show().click(function () { $.post('@Url.Action("EditAnswer")' , { QuestionId: $div.get(0).id.substr(2), Content: $div.find('.wan_s').val(), CreateUser: 0 } , function (data) { if (data) alert(data); else reload(); },'html'); });
就ok了