使用$.get()根据选项的不同从数据库异步请求数据

 更新时间:2014年04月06日 17:23:56   作者:  
本例实现的是这样的一个效果:当从select下拉框选择编程语言时时,根据选项的不同,异步请求不同的函数API描述,需要的朋友可以参考下
Ajax极大地改善了用户体验,对于web2.0来说必不可少,是前端开发人员必不可少的技能。

这个例子是这样的,当从select下拉框选择编程语言时时,根据选项的不同,异步请求不同的函数API描述。这种功能在现在web应用程序中是及其常见的。

我们先来看一下$.get()的结构
复制代码 代码如下:

$.get(url, [, data], [, callback] [, type])
//url:请求的HTML页的URL地址;
//data(可选),发送至服务器的key/value数据作为QueryString附加到请求URL中;
//callback(可选):载入成功时的回调函数(只有当Response的返回状态是success才调用该方法;
//type(可选):服务器端返回内容格式,包括xml,html,script,json,text和_default

首先创建examplDB数据库,建立language和functions表,SQL如下
复制代码 代码如下:

CREATE TABLE IF NOT EXISTS language (
id int(3) NOT NULL AUTO_INCREMENT,
languageName varchar(50) NOT NULL,
PRIMARY KEY (id));

CREATE TABLE IF NOT EXISTS functions (
id int(3) NOT NULL AUTO_INCREMENT,
languageId int(11) NOT NULL,
functionName varchar(64) NOT NULL,
summary varchar(128) NOT NULL, //功能概述
example text NOT NULL, //举例
PRIMARY KEY (id));

下面是插入数据的SQL
复制代码 代码如下:

INSERT INTO language (id, languageName) VALUES
(1, 'PHP'),
(2, 'jQuery');

INSERT INTO functions (id, languageId, functionName, summary, example) VALUES
(1, 1, 'simplexml_load_file', 'Interprets an XML file into an object ', '$xml = simplexml_load_file(''test.xml'');\r\nprint_r($xml);\r\n'),
(2, 1, 'array_push', 'Push one or more elements onto the end of array', '$arrPets = array(''Dog'', ''Cat'', ''Fish'' );\r\narray_push($arrPets, ''Bird'', ''Rat'');\r\n'),
(3, 1, 'ucfirst', 'Make a string''s first character uppercase', '$message = ''have a nice day;\r\n$message = ucfirst($message); // output: Have A Nice Day\r\n'),
(4, 1, 'mail', 'used to send email', '$message = "Example message for mail";\r\nif(mail(''test@test.com'', ''Test Subject'', $message))\r\n{\r\n echo ''Mail sent'';\r\n}\r\nelse\r\n{\r\n echo ''Sending of mail failed'';\r\n}\r\n'),
(5, 2, '$.get', 'Load data from the server using a HTTP GET request.', '$.ajax({\r\n url: url,\r\n data: data,\r\n success: success,\r\n dataType: dataType\r\n});\r\n'),
(6, 2, 'hover', 'hover method accepts 2 functions as parameters which execute alternativelt when mouse enters and leaves an element.', '$(selector).hover(\r\nfunction()\r\n{\r\n//executes on mouseenter\r\n},\r\nfunction()\r\n{\r\n//executes on mouseleave\r\n});'),
(7, 2, 'bind', 'Attach a handler to an event for the elements.', '$(element).bind(''click'', function() \r\n{\r\n alert(''click happened'');\r\n});\r\n'),
(8, 2, 'jQuery.data', 'Store arbitrary data associated with the specified element.', 'jQuery.data(element, key, value);'),
(9, 1, 'add class', 'Adds a class', '(''p'').addClass(''myClass yourClass'');');

都是比较简单的SQL操作,一切准备就绪后就可以编码了。总共有两个脚本文件,一个index.php,一个results.php用于处理请求,先编写index.php
复制代码 代码如下:

<!DOCTYPE html>
<html>
<head>
<title></title>
<style type="text/css">
body {font-family:"Trebuchet MS", Verdana, Arial; width:600px;}
div {background-color:#f5f5dc;}
</style>
<script type="text/javascript" src="jquery.js"></script>
</head>
<body>
<?php
$mysqli = new mysqli('localhost', 'root', 'passwd', 'exampledb');//将passwd改为你的数据库密码
if (mysqli_connect_errno())
{
die('Unable to connect');
}
else
{
$query = 'SELECT * FROM language'; //这里开始是核心代码,都是很简单的语句,主要是在language中取得记录,然后循环输出到select选项
if ($result = $mysqli->query($query))
{
if ($result->num_rows > 0)
{
?>
<p>
Select a languae
<select id="selectLanguage">
<option value="">select</option>
<?php
while($row = $result->fetch_assoc()) //以编程语言的id作为option的value,以语言作为选项。
{
?>
<option value="<?php echo $row['id'];?>"><?php echo $row['languageName']; ?></option>
<?php
}
?>
</select>
</p>
<p id="result"></p>
<?php
}
else
{
echo 'No records found';
}
$result->close();
}
else
{
echo 'Error in query: $query.'.$mysqli->error;
}
}
$mysqli->close();
?>

<script type="text/javascript">
$(function() {
$('#selectLanguage').change(function() {
if($(this).val() == '') return;
$.get(
'results.php',
{id: $(this).val()},
function(data) {
$('#result').html(data);
}
);
});
});
</script>
</body>
</html>

引入jquery,给#selectLanguage添加change事件处理程序,并放在index.php中body结束前
复制代码 代码如下:

<script src="scripts/jquery.js"></script>
<script type="text/javascript">
$(function() {
$('#selectLanguage').change(function() {
if($(this).val() == '') return;
$.get(
'results.php',
{id: $(this).val()},
function(data) {
$('#result').html(data);
}
);
});
});
</script>

下面就是results.php了。它先连接到数据库,然后取得index.php发送到id,根据id在数据库里选择相应的编程语言记录,并将每条记录放到ul列表中
复制代码 代码如下:

<?php
$mysqli = new mysqli('localhost', 'root', 'passwd', 'exampledb'); //这里也要用你的数据库密码改写passwd
$resultStr = '';
$query = 'SELECT functionName, summary, example FROM functions where languageId ='.$_GET['id']; //$_GET['id']就是index.php中用$.get()发送的id
if ($result = $mysqli->query($query))
{
if ($result->num_rows > 0)
{
$resultStr .= '<ul>';
while($row = $result->fetch_assoc()) //和index.php的语句差不多,也是先从数据库取得记录,然后格式化输出
{
$resultStr .= '<li><strong>'.$row['functionName'].'</strong>-'.$row['summary'];
$resultStr .= '<div><pre>'.$row['example'].'</pre></div>'.'</li>';
}
$resultStr .= '</ul>';
}
else
{
$resultStr = 'Nothing found';
}
}
echo $resultStr;
?>

现在所有的代码都编写好了,看下最后的效果
 
这样简单的效果就出来了。

相关文章

  • Ajax中responseText返回的是一个页面而不是一个值

    Ajax中responseText返回的是一个页面而不是一个值

    用response返回的内容却是一个页面的,可以将String 类型改为void 这样返回的就不是整个页面了
    2014-05-05
  • ajax上传多图到php服务器的方法

    ajax上传多图到php服务器的方法

    这篇文章主要为大家详细介绍了ajax上传多图到php服务器的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-05-05
  • 使用Nginx 反向代理来避免 ajax 跨域请求的方法

    使用Nginx 反向代理来避免 ajax 跨域请求的方法

    这篇文章主要介绍了使用Nginx 反向代理来避免 ajax 跨域请求的方法的相关资料,非常不错具有参考借鉴价值,需要的朋友可以参考下
    2016-06-06
  • 解决AJAX请求中含有数组的办法

    解决AJAX请求中含有数组的办法

    这篇文章主要给大家介绍了如何解决AJAX请求中含有数组的问题,文中给出了详细的示例代码,相信对大家的理解和学习很有帮助,有需要的朋友们下面跟着小编一起来看看吧。
    2016-12-12
  • Ajax二级联动菜单实现原理及代码

    Ajax二级联动菜单实现原理及代码

    二级联动菜单,一个多么方便且实用的用户交互功能,有需求的朋友可以参考下本文,或许对你的菜单知识深入学习有帮助,好了,闲话不多说,看代码吧
    2013-01-01
  • IE8用ajax访问不能每次都刷新的问题

    IE8用ajax访问不能每次都刷新的问题

    这篇文章主要介绍了IE8用ajax访问不能每次都刷新的问题 的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-07-07
  • Ajax 跨域如何实现

    Ajax 跨域如何实现

    这篇文章主要介绍了Ajax 跨域如何实现的相关资料,非常不错具有参考借鉴价值,需要的朋友可以参考下
    2016-05-05
  • $.ajax()常用方法详解(推荐)

    $.ajax()常用方法详解(推荐)

    AJAX 是一种与服务器交换数据的技术,可以在补充在整个页面的情况下更新网页的一部分。接下来通过本文给大家介绍ajax一些常用方法,非常不错,具有参考借鉴价值,感兴趣的朋友一起学习吧
    2016-07-07
  • Ajax技术组成与核心原理分析

    Ajax技术组成与核心原理分析

    这篇文章主要介绍了JavaScript性能优化之函数节流(throttle)与函数去抖(debounce),感兴趣的小伙伴们可以参考一下
    2016-08-08
  • AJAX验证数据库内容并将值显示在页面

    AJAX验证数据库内容并将值显示在页面

    光标离开文本框,在本页面的相应地方获取数据库中改值所对应的其他数据,相应的实现代码如下,感兴趣的朋友可以看看
    2014-08-08

最新评论