如何使用javascript查询数据库?

时间:2011-04-10 07:22:44

标签: php javascript jquery ajax

新手的另一个问题。我有一个php变量,可以在数据库中查询值。它存储在变量$ publish中,当用户点击超链接时,它的值将在数据库中发生变化。

if ($publish == '') { 
Link to publish.html
} else { 
Link to edit.html
} 

后台发生的事情是我在数据库表中查询存储在$ publish变量中的一些数据。如果$ publish为空,它将在弹出窗口中添加publish.html的链接。弹出窗口将处理一个表单,并将数据添加到数据库,这意味着$ publish不再是空的。我想要实现的是,只要在弹出窗口中处理表单并将数据添加到数据库,链接就应该更改为edit.html。当页面将重新查询数据库时会发生这种情况,但它应该在没有页面刷新的情况下发生。

如何使用javascript,jquery或ajax?请协助。

8 个答案:

答案 0 :(得分:14)

Javascript本身不能用于处理数据库。这是使用php(或您选择的服务器端语言)完成的。 Ajax用于使用javascript向您的php脚本发送请求,而javascript又将与db通信。它不需要页面刷新。

因此,使用ajax可以轻松实现您尝试做的事情。既然你提到了jquery,你可以查看jquery中的$ .ajax或$ .post方法,这使得这个过程变得更加简单。

您需要使用ajax处理表单。 ajax请求被发送到php脚本,该脚本将在数据库中进行必要的更改并在响应中发送新链接(链接到edit.html)。获得响应后,只需用新的锚元素替换当前的锚元素。

例如......

$.post(url, formdataobject , function (resp) {
   $("a.youra").text('edit').attr('href', resp);
});

url - php脚本所在的位置

formdataobject - 一个javascript对象,它将表单数据作为键值对

第三个参数是一个匿名函数,也称为回调函数,因为只有在从服务器收到响应时才会调用它。这是因为ajax请求是异步的。

在回调函数中,jquery用于将anchor元素内的文本更改为edithref属性更改为响应中的值。

$ .post表示我们正在使用post方法。所以参数可以作为PHP中$ _POST数组的元素进行访问。 更新数据库后,您只需echo输出新链接,它就会在响应中收到。

此外,还有其他格式可以让您获得响应,例如。 xml,json。

答案 1 :(得分:8)

我会尝试将技术术语放在一边,并提供更通用的响应,因为我认为您可能会对客户端和服务器端脚本感到困惑。

将javascript视为一种只能指示您的WEB浏览器如何操作的语言。服务器处理完网页后,Javascript就会执行。

另一方面,PHP在您的Web服务器上运行,并且能够与您的数据库进行通信。如果你想使用javascript从你的数据库中获取信息,你需要让javascript让PHP通过对PHP脚本的AJAX调用来查询数据库。

例如,您可以使用javascript调用以下脚本: http://www.myserver.com/ajax_function.php?do=queryTheDatabase

总结:Javascript无法连接到数据库,但它可以让PHP这样做。我希望有所帮助。

答案 2 :(得分:1)

让我试试,您想要从处理表单处理的弹出窗口更改页面中的链接。尝试为您的链接提供容器:

<div id="publish_link"><a href="#" id="publish">Publish</a></div>

至于表单提交使用Ajax将数据提交给服务器进行更新并获得响应以更改链接以进行编辑或其他内容:

$.post("submit.php", { some_field: "some_value"}, function(response) {
    if(response.isPublished)
       $('#publish_link', window.opener.document).html('<a href="edit.html">Edit</a>');
});

基本上,您的发布链接包含在标识为div的{​​{1}}中,因此您可以在数据处理后更改其内容,而无需重新加载页面。在弹出窗口中,您将进行表单处理,使用jQuery Ajax POST方法完成提交数据。然后,您的脚本接受该数据,更新数据库,如果成功则返回响应。 jQuery POST函数接收到该响应,如果publish_link为真则检查,获取弹出窗口的开启窗口(主窗口)并更新指向isPublished的链接。只是一个想法,可能不是最好的。

答案 3 :(得分:0)

无法使用javascript,jquery或ajax。只有服务器端脚本才能查询数据库。使用ajax请求,您可以获得脚本输出。可以使用纯javascript或jquery发送ajax请求。

答案 4 :(得分:0)

嗯,我想我理解你的问题,但你必须得到一个起点,试着理解这一点:

  • 尝试了解什么是客户端变量和服务器变量。
  • javascript不与数据库通信。
  • 您可以使用javascript将数据检索到特定的“对象变量”。
  • 使用jquery的ajax方法,您可以将该数据发布到其他页面,这将执行 适当的行动

答案 5 :(得分:0)

你可以;) 首先你必须创建php文件来查询数据库并返回类似true或flase的内容,然后使用文件url检查函数并获得答案

function find_published(folder_id) {
    var aj_url = "{{server_path}}/ajax/url"
    var list;
    $.getJSON(aj_url+"?callback=?&",
          function(data) {
              //here is your data... true false ... do every thing you want
          }
    );
};

答案 6 :(得分:-1)

这个node.js的应用程序执行mysql查询https://github.com/felixge/node-mysql

答案 7 :(得分:-2)

您需要使用AJAX,例如.post().get()或JSON。