javascript - 投票/评分系统 : How to fail gracefully when javascript isn't supported/enabled?

标签 javascript html ajax

我正在实现一个类似于 stackoverflow 使用的投票系统。它与 ajax 一起使用,将 POST 请求发送到 url。我想要一种在不支持或启用 javascript/ajax 时优雅地失败的方法,甚至不考虑像/voteup/id 这样的 GET,因为我正在更改数据库。 最好的解决方案是什么?如果未启用 js,我要么考虑使用表单,要么干脆删除该功能。

SO 上至少有三个相关条目,但我无法插入多个超链接

POST with links without JavaScript

最佳答案

将基本投票操作制作成迷你表单,然后使用 javascript 禁用其发布操作。

<form method=post action="hit-url">
   <input type=hidden name=vote value="1" />
   <input type=submit value="Vote Up" onSubmit="doVote(1);return false;" />
</form>
<form method=post action="hit-url">
   <input type=hidden name=vote value="-1" />
   <input type=submit value="Vote Down" onSubmit="doVote(-1);return false;" />
</form>

要将这些内容替换为支持 JavaScript 的用户的链接:

<div id="voteupbutton">
   <form method=post action="hit-url">
      <input type=hidden name=vote value="1" />
      <input type=submit value="Vote Up" onSubmit="doVote(1);return false;" />
   </form>
</div>
<script>
   document.getElementById("voteupbutton").innerHTML="<a href='script:return false' onClick='doVote(1);return false;'>Vote up</a>";
</script>

我没有测试过以上内容。如果您使用 jQuery 或其他框架,将会有更优雅的方法来完成这一切。

关于javascript - 投票/评分系统 : How to fail gracefully when javascript isn't supported/enabled?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2074298/

相关文章:

JavaScript 获取网络摄像头分辨率

javascript - Angular JS(尤其是 Angular Material Design)在 Sublime Text 3 上的缩进效果不佳

带有标签的 Javascript/HTML5 图像查看器

javascript - jQuery 使用 td 值作为 img 的 src

javascript - 如何根据所选类别隐藏 Django 表单中的字段?

javascript - 如何从 $.getJSON 函数返回变量

JavaScript 改变了我的 CSS

jquery - 单击表的 tr 添加上下文菜单(动态)

javascript - AJAX 和辅助功能 : focus or tab index on active element

html - CSS - Div 不居中