Asp.Net MVC 的ContentResult 返回字符串,jquery.post的回调函数不接受,为啥?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Asp.Net MVC 的ContentResult 返回字符串,jquery.post的回调函数不接受,为啥?相关的知识,希望对你有一定的参考价值。

后台用contentresult 返回一个字符串“success”
前台jquery.post的回调函数死活不接受
但是返回“1234567”却能接收
后台代码如下:

[HttpPost]
public ContentResult DoSelect(string StudentId)

string result = "success";
return Content(result);//这样前台回调函数不能接受,若result=“1234567”却能

前台代码如下:

$.post('doselect', StudentId: studentid , function (response)
if (response == 'success')
window.location = 'my';
else
alert(response);
, "json");//接收不到response,但用chrome看到response了success
我怀疑是返回数据的类型问题,但是试过text/json,text/plain都不行!
有经验者帮助!

因为你返回的是字符串"success",对于$.post来说,数据类型应该是html。但是你定的$.post数据类型是json。
要么把$.post最后的"json"去掉
要么return Json(new result = "success"),然后在$.post里面用response.result 获取返回值。
参考技术A 试著用console.log 直接将data内容show出来吧。我曾经看过回传的值是长"\"id\":\"12345\""这种形式,正常应该是"id":"123456"的
既然请求和返回都没问题了,问题肯定是出现在客户端解析上面了,试用用ajax函数然后加个error函数绑定看看是抛出什么错误吧。。。
参考技术B 我今天也遇到了这个问题,需要返回一个json对象,下面这种设置text/json是不起作用的
return Content(res,"text/json")
应该
return Json(object,JsonRequestBehavior.AllowGet)
参考技术C 把“json”去掉,变成默认的类型。post接不到,可以试一下get

备忘ASP.NET MVC 5 升级到 ASP.NET Core MVC 的部分变化

原文:【备忘】ASP.NET MVC 5 升级到 ASP.NET Core MVC 的部分变化

    正在将一个 .net 4.5 的项目(MVC 5)升级到 .net core 2.1,中间遇到了许多的修改,记在下面,帮大家少走弯路。

  1. System.Drawing 下面很多类已经不存在(如Bitmap),可以下载扩展包,例如:https://github.com/zkweb-framework/ZKWeb.System.Drawing,或:https://www.nuget.org/packages/System.Drawing.Common/
  2. Controller 中已经没有 OnResultXX() 的重写方法,解决方法:让 Controller 实现 IResultFilter 接口即可
  3. RouteData.GetRequiredString("controller") 方法已经不被支持,可以使用 RouteData.Values["controller"].ToString() 方法来取代
  4. Cookie 的写入方法如:
     Response.Cookies.Append("SMS", "1", new CookieOptions()
     {
         Expires = DateTime.Now.AddMinutes(2)
     });
  5. 例如 OnResultExecuting(ResultExecutingContext filterContext) 中的 filterContext.Controller 已经改为 object 类型,如果你确定使用的是默认的 Controller 的话,可以这样写:
    (filterContext.Controller as Controller).ViewData
  6. Controller 中的 Session["xx"] 访问方式改为 HttpContext.Session.GetString("xx")
  7. MvcHtmlString 变为 HtmlString,接口为 IHtmlContent
  8. [ValidateInput(false)] 标签已经不再需要添加:https://github.com/aspnet/Mvc/issues/324
  9. Response.ClearContent(); 已经不能使用, Response.BinaryWrite() 方法改为 Response.Body.Write()
  10. new UrlHelper(helper.ViewContext.RequestContext) 改为 new UrlHelper(helper.ViewContext)
  11. Request.UserHostName 改为 Request.Host.Value
  12. Request.Url.Host 改为 Request.Host,注意:通常会包含端口号,或使用:httpContext.Connection.RemoteIpAddress
  13. Request.UserHostAddress 改为 httpContext.Features.Get<IHttpConnectionFeature>()?.RemoteIpAddress
  14. HttpUnauthorizedResult 改名为 UnauthorizedResult
  15. Controller 的 OnAuthentication() 重写方法已经没有了
  16. HtmlHelper.AttributeEncode() 方法已失效
  17. Request..HttpMethod 改为 Request.Method
  18. Request.IsSecureConnection 可以使用 Request.IsHttps
  19. Request.Url.PathAndQuery 改为 Request.Path + Request.Query,可以自己写一个扩展方法进行封装
  20. Request.UrlReferrer 已经不被支持,可以自己封装:request.Headers["Referer"].ToString()
  21. Request.UserAgent 已经不被支持,可以自己封装:request.Headers["User-Agent"].ToString()
  22. Request.IsAjaxRequest 方法在.net core 中没有支持,可以自行扩展:
        /// <summary>
        /// Determines whether the specified HTTP request is an AJAX request.
        /// </summary>
        /// 
        /// <returns>
        /// true if the specified HTTP request is an AJAX request; otherwise, false.
        /// </returns>
        /// <param name="request">The HTTP request.</param><exception cref="T:System.ArgumentNullException">The <paramref name="request"/> parameter is null (Nothing in Visual Basic).</exception>
        public static bool IsAjaxRequest(this HttpRequest request)
        {
            if (request == null)
                throw new ArgumentNullException("request");

            if (request.Headers != null)
                return request.Headers["X-Requested-With"] == "XMLHttpRequest";
            return false;
        }
    }

 

     注意:命名空间多数都会有变化,根据IDE提示添加即可。

以上是关于Asp.Net MVC 的ContentResult 返回字符串,jquery.post的回调函数不接受,为啥?的主要内容,如果未能解决你的问题,请参考以下文章

Asp.net mvc和asp.net有啥区别?

ASP.NET MVC

七天学会ASP.NET MVC ——ASP.NET MVC 数据传递

ASP.NET MVC 和 Angularjs 与 ASP.NET MVC 和 Reactjs

七天学会ASP.NET MVC ——ASP.Net MVC 数据处理

ASP.NET MVC 5、ASP.NET Core MVC 5 有啥区别?