投票/评级系统:如何在javascript不可用时优雅地失败';不支持/启用?

投票/评级系统:如何在javascript不可用时优雅地失败';不支持/启用?,javascript,html,ajax,Javascript,Html,Ajax,我正在实施一个类似stackoverflow的投票系统。它使用ajax将POST请求发送到url。我想要一种在javascript/ajax不受支持或未启用时优雅地失败的方法,因为我正在更改数据库,所以甚至没有考虑使用GET-like/voteup/id。 最好的解决方案是什么?我不是在考虑一个表单,就是在没有启用js的情况下删除这个特性 上至少有三个相关条目,但我不能插入多个超链接 使基本投票操作成为迷你表单,然后使用javascript禁用其发布操作 <form method=post

我正在实施一个类似stackoverflow的投票系统。它使用ajax将POST请求发送到url。我想要一种在javascript/ajax不受支持或未启用时优雅地失败的方法,因为我正在更改数据库,所以甚至没有考虑使用GET-like/voteup/id。 最好的解决方案是什么?我不是在考虑一个表单,就是在没有启用js的情况下删除这个特性

上至少有三个相关条目,但我不能插入多个超链接


使基本投票操作成为迷你表单,然后使用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>

document.getElementById(“voteupbutton”).innerHTML=“”;

我还没有测试过上面的内容。如果您使用的是jQuery或其他框架,那么将有更优雅的方法来完成所有这些操作。

将基本投票操作制作成迷你表单,然后使用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>

document.getElementById(“voteupbutton”).innerHTML=“”;

我还没有测试过上面的内容。如果您使用的是jQuery或其他框架,那么会有更优雅的方式来完成这一切。

简单的选项只是一个常规的表单帖子,即使它是指向URL/voteup/id,我不确定您为什么不能这样做(甚至是您提到的GET)


onsubmit=“return false”
放入标记中,以防止启用JS的用户发布。

简单的选项只是一个常规的表单发布,即使它是到URL/voteup/id,我不确定为什么你不能这样做(甚至是你提到的GET)


onsubmit=“return false”
放入标记中,以防止启用JS的用户进行发布。

虽然您不能使用链接提交表单,但如果您愿意,您当然可以通过查询字符串使用链接触发数据库操作。在任何特定的脚本语言中:

<===
if (querystring("v")) then {
 v.value.writeToDatabase
}
===>

<a href="vote.xxx?v=a">Vote A</a>, <a href="vote.xxx?v=b">Vote B</a>

, 

虽然您不能使用链接提交表单,但如果您愿意,您当然可以通过查询字符串使用链接触发数据库操作。在任何特定的脚本语言中:

<===
if (querystring("v")) then {
 v.value.writeToDatabase
}
===>

<a href="vote.xxx?v=a">Vote A</a>, <a href="vote.xxx?v=b">Vote B</a>

, 

有没有办法提交带有链接的表单?(没有图像或javascript)@Spear:使用GET请求有什么问题?您可以使用30x HTTP从服务器端重新定向到正确的URLresponse@Spear:没有javascript就不行。但是,您可以使用javascript动态修改页面,并用链接替换按钮。我将修改答案以显示这一点。@Phil H:是的,我正在使用jquery,这将完成工作,谢谢:)noscript标记可能会有所帮助。有没有方法提交带有链接的表单?(没有图像或javascript)@Spear:使用GET请求有什么问题?您可以使用30x HTTP从服务器端重新定向到正确的URLresponse@Spear:没有javascript就不行。但是,您可以使用javascript动态修改页面,并用链接替换按钮。我将修改答案以显示这一点。@Phil H:是的,我正在使用jquery,这将完成工作,谢谢:)可能noscript标记会有所帮助。使用GET请求更改数据库是一种不好的做法。使用GET请求更改数据库是一种不好的做法。绕过限制绕过限制