• 网站首页

  • 84384即时开奖现场168

  • 看即时开奖现场报码

  • 最快开奖结果现场直播

  • 金多彩第一时间看开奖

  • 84384即时开奖现场168 > 84384即时开奖现场168 >   84384即时开奖现场168
    微服务架构中的数据交互香港一点红心水主论坛
    时间:2019-11-03

      在浏览器上进行的数据交互实际上应用的http协议。具体的大家可以参照文档:

      我们先从同步数据交互开始说起,这种方式会导致表单的完全提交,页面的整体刷新。form元素中的action表示后台处理接口,method表示提交方式,浏览器支持的的方式get,post。当然协议中还规定了一些其他的提交方式,比如head,put,但是需要通过post方式进行模拟才可应用,这里不做过多讲解。enctype表示表单数据的编码方式,其取值有三种,分别为application/x-,湖南广电和湖南卫视在一起嘛红姐图库彩图总站!multipart/form-data,text/plain,默认方式为application/x-www-form-urlencoded。

      下面是一段前端代码。注意input必须要包含name属性,否则无法为协议数据提供key。另,如果input可以为用户提供直接输入的区域,如单行文本输入框input type=text那么就不用为其提供value,如果提供了value,这个value值将是默认值。如果input不可以为用户提供直接输入的区域,而是通过点击来选择,如下拉菜单,单选按钮,复选按钮,那么必须为input元素提供value值。

      下面是相对应的后台代码,由于使用的是springboot,该controller默认返回的json格式数据:

      这样即可完成数据的同步交互,数据交互完成后页面全局刷新,会将springmvc返回的user信息显示到浏览器页面中。

      另外一种情况也比较常见,批量数据删除的时候,我们需要向后台传递多个id值。前端代码如下,注意,由于是一个类型的值,所有三个input的name值是一样的。

      目前后台还没做什么改变,我们打开页面,输入表单信息,单击提交。出现了跨域异常。但是如果查看请求信息,发现请求是已经发出去了,并且jquery中的post函数对我们的数据进行了编码,并且是按照表单数据格式(POST默认提交编码格式application/x-www-form-urlencoded)进行编码。

      接下来我们就解决后台跨域的问题。其实很简单,只需要为当前类或者当前函数添加@CrossOrigin注解即可。其余代码不变。香港一点红心水主论坛

      那么我们如何发送一个json格式的数据呢(到底发送什么格式的数据需要前后台开发者商定好,为了满足需求,我们尽量学会每种格式都会用)以下部分是前端代码:

      但是要注意,由于发送的数据格式为application/json,所以浏览器向后台发送了两个请求,一个OPTION类型的,一个POST类型的,后者才是真正的请求。

      好,继续往下讨论,如果是提交一个数组的话应该如何实现,这种需求在开发中也很常见。

      这是因为ids为一个数组,ajax会对数组进行编码,为原先的key添加了中括号,成为了ids[],但是后台却是用ids作为参数来接受,这时肯定无法获取。

      查看jquery文档我们发现可以通过设定traditional来阻止上述行为

      注意!这种方式是要慎用,因为traditional一旦设置为true,jquery将不会采用递归的方式序列化数据,这时如果我们传递数组中嵌入对象的这种数据将会出问题。这里还有其他更好的方式

      还有一种比较复杂的情况,当传递的数据是数组包含对象的话应该如何处理,数据格式如下:

      axios相对比jquery来说,它是一个更加纯粹的ajax框架,并且是基于promise机制的,使用axios需要注意是axios默认会将数据转换为JSON格式进行提交,而jquery默认是表单数据格式。如果想要改变需要设置headers属性。2019-10-27国家粮食局局长是什么级别香港马会金光佛论坛

      每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。