页面多次发送ajax的问题,如何不再次发送请求,获取之前得到的数据

页面多次发送ajax的问题,如何不再次发送请求,获取之前得到的数据,第1张

判断麻烦的标准是啥

假定用的jquery;

要是之后不需要用到ajax返回的数据, 导航栏点击的事件绑定用one而不是bind或者on;

如果之后还需要用到ajax返回的数据, 就缓存, 缓存可以是服务端缓存类似redius或其他, 也可以是客户端缓存如放到个全局变量, 如果嫌变量太多, 可以将数据绑到DOM上, 如$domdata("key", ajaxData); 之后再用$domdata("key")取出;

以目前功力能想到的就酱

你的返回的数据类型不同,读取的方式也不同。

如果是一般的html文本可以直接拿到。

像json、xml可以使用jquery的 $each();函数根据返回值的主键获取相应的数据。

1

2

3

4

5

6

7

8

//返回json

$post("dataashx",{},function(datas){

var html;

$each(datas, function(i, data){

html+=dataname

});

$(html)appendto("body");

});

xml的读取形式大体是也是这样的只是取数据的时候有一些变化

    因为对于react来说,同级组件之间的通信尤为麻烦,或者是非常麻烦了,所以我们把所有需要多个组件使用的state拿出来,整合到顶部容器,进行分发。

    这个包里有Provider、connect。

    就比如有一个大盒子(顶层容器Provider),里面有很多小盒子(组件Component),小盒子之间不能通信啊,每个盒子都有一个壳子,state穿不过去啊,于是就有connect来进行连接state和Component。

    Provider作为顶层容器接受store作为参数,进行state分发,在这里,state并不是清晰的设置一个对象,所有的共享数据都在里面,而是由多个reducer组成,每个reducer有一个小的state,多个小的state就组成了一个大的state。Provider在所有Router的最外层。

    connect存在于每个需要共享数据的组件里,connect方法接受两个函数:

    mapStateToProps:mapStateToProps接收state和当前组件的props作为参数,mapStateToProps会在state里面取出当前组件需要的数据,映射到当前组件的props上,这就实现了顶层数据分发到组件。(这个函数是自己定义的,名字不做严格要求,实现state到props映射的功能就好了)

    mapDispatchToProps:它接收dispatch作为参数,将当前组件会用到的dispatch(action)映射到当前组件的事件回调函数fun上,这里讲action换个名字注入到props里面,然后可以在组件内部调用,直接dispatch(action)就好了。

    在这里解释一下bindActionCreators,这个东西是把当前组件的action传到它的子组件上的一个方法,在子组件标签上展开就好了。具体我也没用过,用到了再来补充。

    上面的中,将两个方法直接传入connect方法中,封装的connect方法会把两个函数需要的参数注入,从而实现state和dispatch的映射。

    connect方法会把dispatch函数注入到当前组件的props里面,真的,原来我都不知道dispatch从哪里引进来的。用了connect方法之后,就可以{ dispatch } = thisprops;就是这样的!

    action是一个对象,有一个必要的参数type,剩下的参数key和value自定义,但是因为reducer是纯函数,所以通常的ajax请求都是在action完成的,我看最近一个项目,是在view层dispatch(action1),在action1里dispatch(action2)。上面的action1里面存在数据的请求,将请求回来的数据给action2做参数,action2是一个标准的action,因为它有type。可以触发reducer。

    组件中触发事件,action只是一个对象而已,只有dispatch(action)才能触发reducer去修改state,那么。。。dispatch(action)之后,是怎么找到相应的reducer的?咋找到的?

    看了一下源码,dispatch函数在createStore方法里面,会用到所有的reducer,所以我估计是把所有的reducer执行一遍。。。不匹配actionType的reducer就把当前的state完整不变的返回,符合的就生成一个新的state返回作为当前的state。嗯,,就是这样的。。。

    然后Reducer会接受当前的state和传入的actionType判断处理state。reducer是纯函数,一样的输入必须要得到一样的输出。reducer不能修改当前的state,必须复制一份,修改这个新的,然后返回新的对象作为当前的state。

    reducer这里有个辅助函数,将所有的reducer整合到一个大的reducer里,传给createStore做参数。

    会把一个由多个不同 reducer 函数作为 value 的 object,合并成一个最终的 reducer 函数,然后就可以对这个 reducer 调用 createStore。

    这个state很是神奇啊,每次变动state的时候都会生成一个新的state,所以内存中就会有很多不同时刻的state,

方法和详细的 *** 作步骤如下:

1、第一步,安装并配置PHP集成环境,以phpstudy为例,见下图,转到下面的步骤。

2、第二步,完成上述步骤后,在>

3、第三步,  完成上述步骤后,html文件首先引用所需的类库jquery文件,然后引用正文部分,以简单的表单提交为例,见下图,转到下面的步骤。

4、第四步,完成上述步骤后,html的javascript-ajax部分,以上一步正文中的cilik事件为例,见下图,转到下面的步骤。

5、第五步,完成上述步骤后,php文件的准备部分主要使用$ _POST接受ajax传输的数据,并且可以返回不同类型的数据。

 例如回声结果或转码为json格式的json_encode数据将返回到前端进行处理,见下图,转到下面的步骤。

6、第六步,完成上述步骤后,结果显示:提交表单中的内容后,无需刷新即可显示该内容,见下图。这样,就解决了这个问题了。

jqueryajax方法在执行成功之后,就能直接获取后台返回的值,该值直接在success对应的function参数上。

$ajax({

type: "POST",

url: "<%=path %>/two",

dataType: "json",

data:{'liDu':liDu,'startTime':startTime,'endTime':endTime},

success: function(returnedData){

alert(returnedData);

}

});

执行成功之后returnedData就是后台返回值。

ajax可以写在Store中,也可以写在Action中。之前使用reflux的时候是把ajax写在Store中,造成Store既要 *** 作数据又要请求数据,整体有些庞大复杂。后来使用Redux之后,把ajax转移到Action中,数据请求成功后调用dispatch、Store只管接收新的数据。这样职责都变得单一明了:Store的职责是 *** 作已有数据,Action的职责是发送有效载荷给Store。

以上就是关于页面多次发送ajax的问题,如何不再次发送请求,获取之前得到的数据全部的内容,包括:页面多次发送ajax的问题,如何不再次发送请求,获取之前得到的数据、.net 怎样获取ajax 里data值、Redux有什么用做了什么等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/10159120.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-05
下一篇2023-05-05

发表评论

登录后才能评论

评论列表(0条)

    保存