我正在Django开发一个跟踪应用程序的问题,主要是为了学习练习而且也是我自己的项目 – 而我正在研究使用一些
AJAX来实现“增强”的可用性.例如,允许用户“明确”特定问题,这些问题将添加到他们的观察列表中.这在许多网站中实现,并且通常是AJAX,因为用户在查看的URL点击星标时不需要更改.
现在,我想知道从star_unstar视图返回什么样的响应 – 可以通过AJAX检测请求是否正在进行.
目前,如果请求是AJAX请求,它只返回星号所需的HTML部分,所以我可以替换星号的父DIV中的HTML,以便明星出现“on”或“off”,取决于用户的操作.
不过,我宁愿返回一些JSON对象,因为它似乎更“适当”,我想.这个方法的问题是javascript将不得不修改星形图像的src属性,它的href,以及链接标题,这对于这样一个简单的功能来说似乎是很多的工作.我还在研究未来的在线评论,但是我想在开始编写大量的JS之前,感受到“应该”如何完成.
实现这样的功能时,普遍的共识是什么,不仅仅是Django,而是所有类似的操作框架?
当我使用Ajax时,我的主要关注点通常是限制我发送的数据量.这种类型的Ajax应用程序应该是非常敏感的(如果可能的话不可见).
在切换星形的情况下,我将创建实际的开/关状态作为CSS类,StarOn和StarOff.当客户首次访问该页面时,客户端将同时下载关闭和明星,这是可以接受的,因为星星是一个小图像.当你想要改变明星的外观,将来,你只会编辑CSS,而不必触摸javascript.
对于Ajax,我会来回发送一个 – 一个JSON变量true / false,表示请求是否成功.用户点击星号后,我会将其更改为StarOn状态并发出请求. 99%的时间Ajax将返回true,用户甚至不会意识到Web请求中有某种延迟.在极少数情况下,您会收到一个假的回来,您必须将Star恢复为StarOff,并向用户显示错误消息.