AJAX 是否能解决这个业务需求

11-11-11 billows
在工作中遇到一个AJAX的问题

在系统开发的过程中,有一个业务操作(成本比较高),其过程可能会出现异常,系统做了一个统一的出错页面提示。

但也页面太过于单调,经理说用户体验不好。说在提交的时候,如果出错了在页面弹出一个层显示错误信息。

并停在当前页面。那这种需求,自然想到AJAX.但AJAX 有一个问题是:因为我这个业务操作,在后台可能有返回大量

数据,如果出错了,还好,可以在callback函数里头提示出错信息,并停留在当前页面。但如果成功了,如果跳装,

后台获取的数据如果在结果页面展示。如果在成功在callback函数里头页面跳转就会导致数据丢失,请各位道友,

指教。

个人认为,Ajax擅长页面的局面刷新,或做一些表单的验证,在表单方面的提交是否适合采用AJAX?

1
PCzhang
2011-11-11 09:42
2011年11月11日 09:25 "@billows"的内容
但也页面太过于单调,经理说用户体验不好。说在提交的时候,如果出错了在页面弹出一个层显示错误信息。

并停在当前页面。那这种需求,自然想到AJAX.但AJAX 有一个问题是:因为我这个业务操作,在后台可能有返回大量

数据,如果出错了 ...

页面跳转你是怎么实现数据传递的? 如果是我的话, 会用页面hidden域保留数据,然后再跳转。

billows
2011-11-11 09:49
2011年11月11日 09:42 "@PCzhang"的内容
hidden域保留数据,然后再跳转 ...

关键是如何在跳转后的页面中获得数据。还有在ajax返回的都是json格式的数据,结果页面是一个比较复杂的页面,如果全部采用js操作json数据来控制页面数据的展示,是不是有点麻烦?如果不是json对象,可以直接采用jsp的表达式或其他标签来展示,不需要额外的js操作。

PCzhang
2011-11-11 11:50
2011年11月11日 09:49 "@billows"的内容
关键是如何在跳转后的页面中获得数据 ...

页面跳转我觉得必须把数据在传到服务端, 然后再返回到客户端。 想不出别的方法。

billows
2011-11-11 16:13
2011年11月11日 11:50 "@PCzhang"的内容
页面跳转我觉得必须把数据在传到服务端, 然后再返回到客户端 ...

这就是闹心的地方,ajax返回的还是json格式的,到服务器端还得转化成

对象。

PCzhang
2011-11-11 21:10
2011年11月11日 16:13 "@billows"的内容
到服务器端还得转化成

对象。 ...

将json转为字符串发送到服务端? 然后返回客户端取出来就行了啊.

billows
2011-11-11 23:03
2011年11月11日 21:10 "@PCzhang"的内容
将json转为字符串发送到服务端? 然后返回客户端取出来就行了啊. ...

这样做可是可以,总感觉绕了一圈。json格式数据在页面显示需要借助

js来控制元素数据的显示,因为整个页面数据需要展示,显得麻烦。

如果是Action 中的对象 在数据显示时只需通过标签来显示就行。

实在没有其他方式的话,也就只能这么绕一圈了。

还试过ajax直接返回整个页面,然后用document.write()返回的页面

但这样存在一个js加载的问题,且浏览器兼容很难控制。

最终也不没采用。故到此寻求道友的帮助

谢谢PCzhang :)

PCzhang
2011-11-11 23:49
其实我觉得可以先开始就只返回成功与否就可以啊, 成功了在跳转时带参数,然后再取数据, 如果不成功,就停留在当前页面, 这样省了第一次会产生大量数据了啊。

billows
2011-11-12 09:46
2011年11月11日 23:49 "@PCzhang"的内容
成功了在跳转时带参数,然后再取数据 ...

ajax请求是访问的第三方系统,它返回的数据比较多,比如酒店的信息、价格、动态等,只要访问它的接口都会返回这些数据,数据量较大

同时访问接口比较耗时。所以这些数据的传递比较头疼

banq
2011-11-12 11:15
2011年11月12日 09:46 "@billows"的内容
ajax请求是访问的第三方系统,它返回的数据比较多,比如酒店的信息、价格、动态等,只要访问它的接口都会返回这些数据,数据量较大 ...

AJAX其实没有什么特别,就象大巴士运输(同步)改成摩托小三轮(异步)运输,多跑几趟而已。

billows
2011-11-12 12:05
2011年11月12日 11:15 "@banq"的内容
大巴士运输(同步)改成摩托小三轮(异步)运输,多跑几趟而已 ...

banq 总结得形象精辟 :)

PCzhang
2011-11-14 11:30
2011年11月12日 09:46 "@billows"的内容
ajax请求是访问的第三方系统,它返回的数据比较多,比如酒店的信息、价格、动态等,只要访问它的接口都会返回这些数据,数据量较大

同时访问接口比较耗时。所以这些数据的传递比较头疼 ...

这样的话,我建议多封装一层, 比如弄个缓存什么的, 这样数据取出来后放在一个地方, 然后将是否成功的表示返回给客户端就行了。成功后, 再到缓存里取出数据。 不过如果整体项目框架无法改动的话, 也没办法, 复杂点是复杂点, 先实现需求吧。

猜你喜欢