Goodsu

导航

 

刚开始学习ajax,参考的是W3school上的教程。不过期间还是遇到了一些问题或疑惑之类的东西,经过努力算是完整的把实例运行了一遍,所以做个笔记吧。

以下实例代码均可在w3school找到。

实例一;AJAX  与ASP/PHP 请求实例

1)按照w3school教程,创建html和js,同时创建后端程序,如php.这一步保证代码无误

2)以上程序都是在appach/htdocs目录下创建的,所以都已经在本地服务器上了。这里我把appach服务器打开。

3)当时我是用webstrom打开chrom运行的html,页面打开之后在输入框开始输入a-z,可是页面响应的结果却是代码,

 0) { $hint=""; for($i=0; $i

  到这里出现这样的结果,我自然是不懂了,没办法就接着尝试。

  3-1)这时我就关掉了appach服务器,从webstrom下打开chrom运行html,发现输入时无任何响应。这样应该也是合理的,毕竟没有模拟客户端的请求响应过程。

  3-2)这次不在webstrom下打开chrom来运行html,而是在chrom下输入(localhost/...)来从本地服务器请求html,所以这里appach是打开的。然后页面打开后输入

    这次响应结果正常。这样才是正常的模拟了客户端与服务器的请求响应过程。

请在下面的输入框中键入字母(A - Z):

姓氏:v
建议:Violet , Vicky

 

4)open()中url参数需要根据服务器程序php所在位置的路径来写,这里使用相对路径来写。如(../php/gethint.php)。

实例二,AJAX 数据库实例

这个实例由于涉及到php、mysql,所以还是花了不少时间搞清楚他们之间的关系。

使用的web服务器软件是集成了apache/mysql的XAMPP,避免了手动配置php/mysql.

php之前没学过,借助w3school基本可以看懂程序,验证过程中问题主要出在了数据库上。下面记录以下验证过程。

1).下载并安装了mysql的客户端,配置了环境变量。这样客户端配置应该是正常了。打开xampp的mysql服务器,通过命令行操作发现mysql的确安装配置成功了。2)然后就用mysql的语句开始创建数据库-->创建表格-->插入数据。无奈对数据库语句不熟悉,老是蹦出syntax错误,所以放弃了以这样的方式创建数据库。

3)然后通过xampp-mysql--admin中的phpmyadmin可视化创建数据库。

 基本思路依旧是,创建数据库-->创建表格-->插入数据。

4)上面这些完成之后,基本上就可以开始运行程序了。不过还是出现了一些问题。

   4-1)由于不想设置密码,所以就这样写了,$con = mysql_connect('localhost'),不过这样虽然没报错,可是在查找数据库表时找不到。

           无奈就在phpmyadmin中设置了root@localhost对应密码为“root”.

$con = mysql_connect('localhost','root','root')

   4-2)接下来重新运行html,发现只能返回表格头部,而php从数据库中获取的数据却无法返回,由于对php并不熟悉,所以还是折腾了不少。

        后来通过打log.发现了原因。然后我也是醉了。

--------------html---------------
<select name="users" onchange="showUser(this.value)"> <option value="1">peter</option> <option value="2">paul</option> <option value="3">su</option> <option value="4">san</option> </select>
-----------------------------------------

--------------php------------------------
$sql="SELECT * FROM user WHERE firstname = '".$q."'";
print_r($sql);
--------------------------------------------------------

本意要通过this.value把选中的下拉菜单的值传给php,然后php用它作为firstname来检索表格。数据库表格中添加了四条数据,firstname分别是peter/paul/su/san.

可是通过log,发现js传递过去的参数q跟数据库中firstname是对不上的。

log信息:SELECT * FROM user WHERE firstname = '3'

 然后发现是html中value中设置错误。所以就改成下面这样

 <select name="users" onchange="showUser(this.value)">
        <option value="peter">peter</option>
        <option value="paul">paul</option>
        <option value="su">su</option>
        <option value="san">san</option>
    </select>

 然后一切都正常了。

输出结果如下

 

完整的代码如下

html+js

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
<form>
    Select a User:
    <select name="users" onchange="showUser(this.value)">
        <option value="peter">peter</option>
        <option value="paul">paul</option>
        <option value="su">su</option>
        <option value="san">san</option>
    </select>
</form>
<br/>
<div id="txtHint"><b>User info will be listed here.</b></div>

<script>
    function showUser(str){
        var xmlhttp;
        if(str==''){
            document.getElementById('txtHint').innerHTML='';
            return;
        }
        if(window.XMLHttpRequest){
            xmlhttp=new XMLHttpRequest();
        }else{
            xmlhttp=new ActiveXObject('MICROSOFT.XMLHTTP');
        }

        xmlhttp.onreadystatechange= function() {
            if((xmlhttp.readyState==4)&&(xmlhttp.status==200)){
                document.getElementById('txtHint').innerHTML=xmlhttp.responseText;
            }
        };
        xmlhttp.open('get','../php/getcustomer.php?q='+str,true);
        xmlhttp.send();
    }
</script>
</body>
</html>

 php

<?php
$q=$_GET["q"];

$con = mysql_connect('localhost','root','root')  or die("数据错误!");
if (!$con)
{
    die('Could not connect: ' . mysql_error());
}

mysql_select_db("ajax_demo", $con) or die('错误');

$sql="SELECT * FROM user WHERE firstname = '".$q."'";
print_r($sql);
$result = mysql_query($sql);

echo "<table border='1'>
<tr>
<th>id</th>
<th>firstname</th>
<th>lastname</th>
<th>age</th>

</tr>";
while($row = mysql_fetch_array($result))
{
    echo "<tr>";
    echo "<td>" . $row['id'] . "</td>";
    echo "<td>" . $row['firstname'] . "</td>";
    echo "<td>" . $row['lastname'] . "</td>";
    echo "<td>" . $row['age'] . "</td>";
    echo "</tr>";
}
echo "</table>";

mysql_close($con);
?>

 数据库是通过phpmyadmin创建的

 

前端通过ajax和php、数据库的通信这里基本上做了演示。

后面会重点去学习ajax自身的一些东西,如跨域等。

 

posted on 2015-08-20 17:04  Goodsu  阅读(129)  评论(0编辑  收藏  举报