zoukankan      html  css  js  c++  java
  • .net core mvc控制器方法返回字符串

    mvc页面一个删除的方法,用ajax请求了控制器的删除方法,一开始用的

    $.post("/admin/del", { id: id }, function (data) {
    
    }, "json")

    调试走了后台控制器的方法,但没走到function里面,post改成了get也不行,最后改成了这种写法

    $.ajax({
        url:"/admin/del",
        dataType:"json",
        data:{id: id},
        type:"POST",
        success:function(req){
            //请求成功时处理
        },
    });

     调试走了后台控制器的方法,但还是没走到function里,去掉【dataType:"json",】后可以了。

    --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    关于dataType:

    1、请求成功且返回了数据但不进success:function(){}:https://blog.csdn.net/weixin_34357436/article/details/92380485

    JQuery 中ajax的一点其它的认识: 客户端发起请求,得到服务器端的相应是200(正确拿到服务器响应的数据)没有问题.此时在判断进入success 对应的回调函数还是进入到error对应的回调函数之前,可能会校验一些东西:

    a.返回的每条数据是否是dataType中定义的数据类型。如果有部分数据不是或者哪怕一条数据没有严格的按照dataType定义的类型,程序就会进入到error:function(){****};

    b.请求的域和当前域是否是同一域,如果不是同一域也十分有可能进入error:function(){***}。

    2、没有设置dataType会解析为字符串:https://blog.csdn.net/u011277123/article/details/53404169

    3、datatype含义:https://blog.csdn.net/u013476542/article/details/61414401/

    其中,text和xml类型返回的数据不会经过处理。数据仅仅简单的将XMLHttpRequest的responseText或responseHTML属性传递给success回调函数,

    如果指定为html类型,任何内嵌的JavaScript都会在HTML作为一个字符串返回之前执行。类似的,指定script类型的话,也会先执行服务器端生成JavaScript,然后再把脚本作为一个文本数据返回。

    如果指定为json类型,则会把获取到的数据作为一个JavaScript对象来解析,并且把构建好的对象作为结果返回。为了实现这个目的,他首先尝试使用JSON.parse()。如果浏览器不支持,则使用一个函数来构建。JSON数据是一种能很方便通过JavaScript解析的结构化数据。如果获取的数据文件存放在远程服务器上(域名不同,也就是跨域获取数据),则需要使用jsonp类型。使用这种类型的话,会创建一个查询字符串参数 callback=? ,这个参数会加在请求的URL后面。服务器端应当在JSON数据前加上回调函数名,以便完成一个有效的JSONP请求。如果要指定回调函数的参数名来取代默认的callback,可以通过设置$.ajax()的jsonp参数。

    --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    关于http的put、delete等方法:https://blog.csdn.net/tankpanda/article/details/49824669

      就以前为了面试:get跟post 的区别,都会常说两点,第一,get请求方式,不安全。post安全。第二,get请求参数内容有限制大小,post请求没有限制。

      这是一种似是而非的答案,其实http协议定义跟这完全没有关系!第一,get请求不安全,post请求同样也不安全。原因基于抓包一看,就得到内容。第二,http协议从来就没有限制过get请求内容的大小,而是浏览求对url地址的长度的限制,不同浏览器对url请求的参数内容大小会有限制。

      这根http协议定义就有点关联啦,put/delete/get/pos依次可以对应数据库的增、删、改、查。所以get请求一般是查数据的,而且内容是无论请求多少,都是一样不会发生改变的。当然,get也可以带参数,这里狭义的认为,只要不会影响数据结构的请求方式,都是等幂请求。get请求也是http协议定义中的标准使用。

      post、put、delete自然就是不等幂请求,一般会改变数据结构。对应会发生数据结构的改变。这里如果用过Laravel框架,其中的resource路由的定义,就会这个get、post、delete、put请求方式有深刻的理解。

      同样的url地址,同样的参数形式,会因为请求方式的get、post、put、delete的不同,会分别发生不同的行为。得到不同的结果。

    ps:读了以后还是有点迷,http这些方法有做什么操作吗,还是上边说的框架根据http的方法比如delete进行了删除操作,待以后查证吧

    --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    关于控制器方法返回类型:https://docs.microsoft.com/zh-cn/aspnet/core/web-api/action-return-types?view=aspnetcore-5.0

    ASP.NET Core 提供以下 Web API 控制器操作返回类型选项:

     ps:第一个特定类型看描述包括基本数据类型和引用数据类型,感觉都能返回了

  • 相关阅读:
    Summarizing NUMA Scheduling两篇文章,解释得不错
    VCAP5-DCA – What’s new?
    NUMA总结。
    NUMA and vNUMA
    NUMA
    vsphere 5.1 性能最佳实践。
    vsphere性能
    mysql的事务,隔离级别和锁
    mysql5.7 生成列 generated column
    mysql8 公用表表达式CTE的使用
  • 原文地址:https://www.cnblogs.com/fangxinliu/p/14028826.html
Copyright © 2011-2022 走看看