web前端与后台数据交互

1.前端请求数据URL由谁来写?
在开发中,URL主要是由后台来写的,写好了给前端开发者.若是后台在查询数据,须要借助查询条件才能查询到前端须要的数据时,这时后台会要求前端提供相关的查询参数,这里的查询参数也就是URL请求的参数。前端

2.接口文档主要由谁来写?
接口文档也是主要由后台开发者来写的,由于直接跟数据打交道的就是后台,后台是最清楚,数据库里面有什么数据,能返回什么数据.前端开发只是数据的被动接受者.因此接口文档也主要是由后台来完成的,前端只是接口文档的使用者,使用过程当中,发现返回的数据不对,则须要跟后台进行商量,由后台来修改.切记 前端不要随意更改接口文档,除非在取得后台开发人员的赞成的状况下.总的来说,接口文档主要由后台来设计,修改,前端开发者起到了辅助的做用。ajax

3.前端开发与后台交互的数据格式主要是什么?
主要是JSON
XML如今用的很少数据库

4.前端开发的后台交互原理?
在项目的时候,咱们先后端会大概说一下接口地址,前端请求的参数,后端返回的参数,而后你们就开始写,写的差很少的时候,你们调一下接口看一下返回的数据,没问题就能够了。json

5.前端请求参数的形式
GET和POST两种方式
对安全性不高 采用get方便
post要比get安全
GET - 从指定的服务器中获取数据
POST - 提交数据给指定的服务器处理后端

6.前端应该告知后台哪些有效信息,后台才能返回前端想的数据的呢?
先将要展现的页面内容进行模块划分,将模块的内容提取出来,以及方便前端的一些标志值等,将全部想要的内容和逻辑告知后端,
后端就会去数据库里面去查找相应的数据表中去得到相应的内容,或者图片地址信息。
URL中的参数主要是根据后台须要,
若是后台须要一个参数做为查询的辅助条件 前端在URL数据请求时就传递参数。
参数前面?
几个参数中间&安全

7.咱们应该怎么把页面这些信息有效传达给后台,以及后台是如何获取到这些数据?
总的来说:全部前端请求的URL后面的参数,都是辅助后台数据查询的.若是不须要参数,那么后台就会直接给个URL给前端。服务器

8.前端应该如何回拒一些本不属于本身作的一些功能需求或任务?
在与后台打交道中,咱们常常遇到这种状况,有时候明明后台来处理某个事件很简单,后台非要你来作,这时候咱们应该懂得去回绝他。
原则:前端就是负责把数据展现在页面上
发挥:这就须要咱们对一个需求,一个任务的要有清晰认识了,若是对任务含糊不清,本身都没搞明白,你只能受后台摆布了.最后也会由于任务没有完成而备受责难了。app

9.当前端在调用数据接口时,发现有些数据不是咱们想要的,那么前端应该怎么办呢或者怎么跟后台讲呢?
首先要把请求的URL和返回的数据以及在页面的展现的状况给跟后台看,这样有理有据,后台开发人员是不会说什么的,不然,后台会很不耐烦的,甚至骂你的可能都有,自己作后台比较难,尤为在查询数据,取数据,封装数据方面都比较难处理。框架

10.为何须要在请求的时候传入参数?
由于后台在查询数据库的时候须要条件查询。dom

DEMO:

var data=JSON.stringify({"page": {"pagenow": 1,"pagesize": 20},"file":{"name":"jpg"},"catalogs":[{"id":1},{"id":2}]});
        $.ajax({
            type:"POST",
            url:"//访问的url",
            data:data,
            contentType:"application/json", 
            success:function(data){
                //显示数据
            }
        });

注意:

1、contentType

contentType,能够是application/x-www-form-urlencoded这种默认类型的,不过当后台有struts等框架的话,会在action以前拦截请求,并把request body 里面的值都读出来,致使咱们不能再request里面读取到值,只能依赖struts的domain model 
全部若是有后台用这种机制的话,那就须要更改contentType:application/json,这样子strust就不会拦截请求了。

2、stringify和parseJSON

这两种方法不能乱用,一不当心的话就会致使后台解析不了数据,正确的用法在上面。 
stringify是将Json转义,parseJSON是将json去除转义并解析成对象 
总结

前端传后台json,应该传字符串过去,不能传Object对象,并且要适当指定contentType。