是否可以使用jQuery运行MySQL查询?我试图模仿SE网站上的投票功能。
SE上的投票计数器自动更新,无需重新加载页面(这是我目前所拥有的,一个隐藏的表单,重新提交到当前页面但在PHP上运行一个小块来更新问题的分数在数据库中)。我假设这是使用Javascript / jQuery看到的,因为它是动态的。
我该怎么做?是否有一个简单易用的库(如PHP)?
答案 0 :(得分:16)
您可以使用ajax调用服务器页面(PHP / ASP /ASP.NET/JSP),并在该服务器页面中执行查询。
http://api.jquery.com/jQuery.ajax/
<强> HTML 强>
<input type='button' id='btnVote' value='Vote' />
<强>的Javascript 强>
当用户点击ID为“btnVote”的按钮时,此代码将被执行。下面的脚本正在使用jquery库中编写的“ajax”函数。它将向页面发送一个请求作为“url”属性(ajaxserverpage.aspx)的值。在这个例子中,我发送一个名为“answer”的密钥的查询字符串值为5。
$("#btnVote").click(function(){
$.ajax({
url: "ajaxserverpage.aspx?answer=5",
success: function(data){
alert(data)
}
});
});
在您的aspx页面中,您可以阅读查询字符串(在此示例中,answer = 5)和 构建一个查询并再次执行它一个数据库。您可以通过在PHP中编写Response.Write(在asp&amp; asp.net)/ echo中来返回数据。无论你返回什么,都会回到可变数据。如果查询执行成功,您可能会返回“投票已捕获”或适合您的应用程序的消息。如果你的try-catch块中发现了一个错误,请为此返回一条消息。
确保在构建查询之前正确清理输入。我通常将我的功能分组并将它们放入一个文件中。例如:处理用户相关内容的MY Ajax页面将包含ValidateUser,RegisterUser等方法......
编辑:根据您的评论,
jQuery支持帖也。这是格式
$.post(url, function(data) {
alert("Do whatever you want if the call completed successfully")
);
相当于
$.ajax({
type: 'POST',
url: url,
success: function(data)
{
alert("Do whatever you want if the call completed successfully")
}
});
这应该是一个很好的阅读:http://en.wikipedia.org/wiki/Same_origin_policy
答案 1 :(得分:5)
用你最喜欢的语言只有几行。
$.post('script.php', { id: 12345 }, function(data) {
// Increment vote count, etc
});
$id = intval($_POST['id']);
mysql_query("UPDATE votes SET num = num + 1 WHERE id = $id");
有许多不同的方法可以实现这一目标。