【发布时间】:2012-03-25 13:07:04
【问题描述】:
我正在尝试实现与 Stack Overflow 非常相似的投票。有多个项目旁边都有一个投票按钮。目前,我有它的工作,但它已完成服务器端,回发,并需要一段时间来重新加载数据。这是流程:
- 你点击投票按钮,
- 它会触发一个 javascript 函数,该函数单击一个隐藏的 ASP.NET 按钮(这样做是因为每页有多个投票按钮),
- 按钮触发,
- 它更新数据库,然后
- 页面回发并刷新,显示更新。
如何利用 javascript 和 AJAX 来消除这种糟糕的用户体验?我希望它像 Stack Overflow 一样工作,但我没有使用 MVC。任何帮助、示例、建议都会很棒。谢谢。
更新:
我已经实现了这个,但是当我在 Web 方法上放置断点时,它甚至不会触发,而且我总是收到错误警报。有什么想法吗?
javascript:
<script type="text/javascript">
$(document).ready(function () {
$("[id^=VoteMeUp]").click(function (event) {
var dta = '{ "VoteId":' + $(event.target).val() + '}';
$.ajax(
{
type: 'POST',
data: dta,
url: 'Default.aspx/SaveUpVote',
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
//$(event.target).text("Vote Casted");
alert("Vote Casted");
},
error: function (x, y, z) {
alert("Oops. An error occured. Vote not casted! Please try again later.");
}
}
);
});
});
</script>
后面的代码(你可以使用 C#,我都熟悉):
Imports System.Web.Services
Imports System.Web.Script.Services
<WebMethod()>
Public Shared Function SaveUpVote(ByVal VoteID As Integer) As Boolean
Dim test As Boolean = False
Dim mySQL As New SQLHandler
test = mySQL.UpdateVoteByID(VoteID)
Return test
End Function
HTML:
<input type="image" src="images/vote.png" id="VoteMeUp1" value="321" />
【问题讨论】:
标签: javascript jquery asp.net ajax webforms