问题描述
大家好,我是个新手。我想请问一下那个我用ajax去请求对数据的操作,比如删除一个联系人。这里有两种记法。[size=x-small]1.只等ajax请求返回成功时候才去进行删除联系人的操作。[/size][size=x-small]2.在客户端直接进行操作,后再让后台自己执行。[/size]这两个方法,有一个问题如果采用第二用方法的话。肯定会由于少部分的用户由于超时等原因,导致客户端在网页上显示不正确,但是速度快。如果采用第一种方法,由于需要等待服务器的返回操作成功才去执行客户端的操作。这样网页响应速度肯定比第二种慢。我想请问一下大家都是怎么处理的。。谢谢了。
解决方案
一般情况下是采取第一种情况,因为要保证数据的完整性,只有在后台操作真正的成功才更新前台的显示,并且在后台的操作过程中可能会还回前台不同的状态,这样前台会显示不同的操作结果。由于一般传递的参数都是标示,由于传递数据量不是很大,所以在速度方面二者的差距不是很大。你的第二种不可能保证数据的一致性。
解决方案二:
你所列举的两种方法,在正常的系统中都不会使用。在正常的系统中是这样的,利用ajax删除一条数据之后,只是返回一个状态码到前台,给用户提示删除的结果。然后页面会刷新到后台重新retrieve数据,这样就确定了所展示的数据与数据库中保持一致。如果系统的数据库资源比较有限,则会采用你所说的第一种方法,来节省数据库资源。某些系统会采用第二种方式,因为数据操作极其简单,已经被认定为确定会成功。对于你所说的超时问题,如果是session的timeout,则请求无法到达后台,如果是数据处理的超时,那么即使是普通的http请求同样会导致超时,这时就需要对数据库表结构进行优化。你传到后台的数据量并不会对于ajax请求产生影响,除非数据多到超过了get方法的数据量最大值,例如4kb。