【问题标题】:How can I use jQuery to run MySQL queries?如何使用 jQuery 运行 MySQL 查询?
【发布时间】:2012-01-25 18:52:49
【问题描述】:

是否可以使用 jQuery 运行 MySQL 查询?我正在尝试模拟在 SE 网站上投票的功能。

SE 上的投票计数器会自动更新,无需重新加载页面(这是我目前拥有的,一个隐藏的表单,可以重新提交到当前页面,但在 PHP 上运行一个小块来更新问题的分数在数据库中)。我假设这是使用 Javascript/jQuery 完成的,因为它是动态的。

我该怎么做?是否有一个使它变得容易和简单的库(如 PHP)?

【问题讨论】:

标签: javascript jquery mysql html


【解决方案1】:

您可以使用 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 和 asp.net 中)/ echo 来返回数据。无论您返回什么,都将返回到可变数据。如果您的查询执行成功,您可能会返回一条消息,如“投票已捕获”或任何适合您的应用程序的消息。如果在您的 try-catch 块中发现错误,请返回一条消息。

确保在构建查询之前正确清理输入。我通常将我的功能分组并将它们放入一个文件中。例如:处理用户相关内容的我的 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

【讨论】:

  • 不要屈服于不为每个查询创建单独的服务器操作但有一个通用操作来执行 jQuery 指定的任何查询的诱惑。那将是一个巨大的安全漏洞。应该始终有专门针对每个可以检查权限的单个操作的服务器端代码。
  • 一个简单的问题:如果我要发送数据的文件在我的 webroot 目录之外怎么办?这可能吗?另外,我可以发送 POST 数据而不是 GET 吗?
  • 回复:快速提问。您可以将数据发送到同一域中的任何地方。跨域难。并且 jQuery 也可以 POST。
【解决方案2】:

这只是您最喜欢的语言的几行代码。

Javascript

$.post('script.php', { id: 12345 }, function(data) {
    // Increment vote count, etc
});

PHP(简体)

$id = intval($_POST['id']);
mysql_query("UPDATE votes SET num = num + 1 WHERE id = $id");

有很多不同的方法可以做到这一点。

【讨论】:

  • 另外,详细说明一下:想想如果我可以使用 Javascript 向您的服务器发送任意 MySQL 查询,那该有多糟糕。 DROP TABLE votes // muahahaha
  • 哎呀,问题的标题是什么? How can I use jQuery to run MySQL queries?如果他想使用XMLHTTPRequest,那就去吧。
  • 我对你使用 jQuery 没有意见。您不应该将其标记为 JavaScript。它具有误导性,将其标记为 jQuery。
  • 上次查的时候,jQuery的写法是Javascript。
  • jQuery 是一个 JavaScript 库。自然,任何使用 jQuery 的代码都是 javascript 代码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-15
  • 1970-01-01
  • 2016-05-02
  • 2013-12-09
  • 2020-06-20
相关资源
最近更新 更多