一:问题描述
ajax回调函数,明明后台返回成功了,前端一直进Erro
二:问题反思
1.前端知识体系认知的不够完善。一直做后端的我,总感觉ajax套用模版就好,普通的模版,只有success,没写erro,所以最开始一直以为回调函数没有执行。后来发现,回调函数还有erro,fail等。
2.越是简单的东西,其实出错率越高。
三:问题解决
先贴一下我的前端代码:
$.ajax({
url: '/PlanTask/PlanTaskBtnSave',
method: 'post',
data: formadate,
dataType: "text", //必须是双引号的
success: function (res) {
alert(1)
if (res.code = '0') {
parent.closeIframe(res);
}
else
alert(res.msg);
},
error: function (res) {
alert(2)
alert(JSON.stringify(res)) //这个函数可以将res格式化后打印出来
}
})
return false;
});
然后是后端代码:
public ActionResult PlanTaskBtnSave(object s)
{
HR_PlanTask pt = new HR_PlanTask()
{
Type = Request["TaskSelect"], //类型
Name = Request["TaskName"], //名称
Description = Request["Taskdes"], //说明
CreateId = Request["waitdealId"], //待处理人
CreateDate = Convert.ToDateTime(Request["createdate"]), //创建日期
DealId = Request["dealid"], //处理人
// DealDate = Convert.ToDateTime(Request["dealdate"]), //处理日期
};
PlanTaskBLL ptb = new PlanTaskBLL();
int SaveResult =ptb.PlanTaskSave(pt);
return Content(SaveResult.ToString()); //返回string
}
最开始前端代码的 dataType并不等于"text",所以一直进erro,打印出来的错误代码如下:
{"readyState":4,"responseText":"adsfasdf","status":200,"statusText":"parsererror"}
经过百度后得知,如果后台返回的是简单的string,那么ajax的dataType必须为"text",否则就会报上面的错误。
真是一入前端深似海,昨天还有个小问题,保存form表单的时候,只能取到第一个元素,其他元素忘记加name选项了,我。。。