Javascript 在使用Ajax时,我应该为可视化客户端和服务器端编写逻辑吗?

Javascript 在使用Ajax时,我应该为可视化客户端和服务器端编写逻辑吗?,javascript,php,ajax,json,Javascript,Php,Ajax,Json,我想知道在Facebook上,你会怎么做: 对此(在客户端): 但如果要刷新页面,它也会说: 这是否意味着Facebook在前端和后端都有这样的逻辑来显示这些信息 或者逻辑只存在于前端,而服务器只是简单地通知客户端用户“喜欢”帖子的内容?我提出这个问题的原因是因为我正试图实现类似的目标: 我需要它来更新按钮上的计数器,并根据您的选择相应地给它们上色,但是,我将“重复”服务器端和客户端的视觉逻辑,这似乎不实用 如何给这些按钮上色,我应该用PHP还是只传递一堆信息,让客户端脚本决定?它将在前

我想知道在Facebook上,你会怎么做:

对此(在客户端):

但如果要刷新页面,它也会说:

这是否意味着Facebook在前端和后端都有这样的逻辑来显示这些信息

或者逻辑只存在于前端,而服务器只是简单地通知客户端用户“喜欢”帖子的内容?我提出这个问题的原因是因为我正试图实现类似的目标:

我需要它来更新按钮上的计数器,并根据您的选择相应地给它们上色,但是,我将“重复”服务器端和客户端的视觉逻辑,这似乎不实用


如何给这些按钮上色,我应该用PHP还是只传递一堆信息,让客户端脚本决定?

它将在前端设置适当的“Like”显示,并向后端发送一条消息,表明它已被单击。这是一个数据游戏,只要你能保持两端的一致性,你就不需要重新加载任何东西,在cookies中存储任何东西,等等。事实上,在客户端永久存储任何东西都是没有好处的,因为如果我移动机器,突然我就不再得到“你喜欢的东西”的标志

Facebook和类似网站的这种效果是,他们会检查你是否是喜欢这篇文章的人之一。这发生在后端。例如,您可能会从后端获得一个JSON字符串,如下所示(如果我的JSON字符串格式错误,请告诉我):

其中,
youLike:1
表示您在加载页面之前的某个时间确实“喜欢”了文章。当您单击“喜欢”或“不喜欢”按钮时,前端的JavaScript会做出相应的HTML更改以反映数据。然后,它将事件通知后端。假设您与其他内容不同,但尚未重新加载页面。当您按下“不一样”按钮(或者现在的其他按钮)时,javascript将对前端进行适当的更改,然后向后端发送信号。信号可能如下所示:

  { 'Action' : 'Like', 'Value' : 0, 'PostID' : 123534234, 'UserID' : 1234234 }
它通知后端前端的值现在为0或false。因此后端现在可以将其解释为“like值设置为0”,并进行适当的更改

因此,当您重新加载页面时,您现在得到的是
youLike:0
,而不是以前的
youLike:1


我希望这能回答你的问题。如果你需要我澄清什么,请让我知道

如果您正在寻找所描述的功能,那么将此逻辑放在两端是很实际的:)您也可以将其放在服务器端,并在数据更改时(从服务器)重新呈现组件。不可能简单地在客户端执行此操作,需要某种类型的标志。您需要检查当前用户是否在服务器端添加了上/下拇指。这可能是显示代码的附加参数/标志。这是一些有用的信息,完全回答了问题+1.
  { 'Action' : 'Like', 'Value' : 0, 'PostID' : 123534234, 'UserID' : 1234234 }