English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Уроки AJAX
AJAX = Asynchronous JavaScript and XML (асинхронный JavaScript и XML).
AJAX не является новым языком программирования, а представляет собой новый метод использования существующих стандартов.
AJAX - это искусство обмена данными с сервером и обновления части веб-страницы без перезагрузки всего страницы.
Клиентская часть: html, js, css кодовая часть:
!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title></title> <meta charset="UTF-8"/> </head> <!--css样式部分--> <style type="text/css"> .content_map{ /*border:1px solid blue;*/ width:1349px; height: 524px; float: left; margin-top:100px; } .content_map .mLeft{ border:none; border-top:1px solid #fb6c20; width:400px; margin-top:14px; float: left; margin-left:134px; } .content_map>span{ margin-left:20px; margin-right:20px; font-size:28px; font-family: "Microsoft Yahei"; /*font-weight: bold;*/ float: left; } .content_map .mRight{ float: left; border:none; border-top:1px solid #fb6c20; width:400px; margin-top:14px; } #maplist{ margin-top:50px; width:749px; height: 524px; /*border:1px solid #fb6c20;*/ background: url("images/diru.png") no-repeat 0 0 ; background-size:contain; position: relative; float: left; } .mapShop img{ position:absolute; /*border:1px solid red;*/ } #map_right{ /*border:1px solid #fb6c20;*/ float: left; /*width: 600px;*/ width: 594px; height: 524px; background-color: #f0f2fe; margin-top: 40px; } .shopMsg img{ width: 450px; height: 300px; margin-left: 72px; margin-top: 40px; } .shopMsg .pmname{ color: #000; font-size: 20px; margin-top: 30px; margin-left: 72px; font-family: 微软雅黑; } .shopMsg .address{ color: #000; font-size: 20px; margin-top: 30px; margin-left: 72px; font-family: 微软雅黑; } .shopMsg .phone{ color: #000; font-size: 20px; margin-top: 30px; margin-left: 72px; font-family: 微软雅黑; } </style> <body> <!-- Часть HTML--> <div class="content_map"> <!-- Заголовок--> <hr class="mLeft"/> <span>Соответствующие ветеринарные клиники</span> <hr class="mRight"/> <!-- Часть слева: карта--> <div id="maplist"> </div> <!-- Часть справа, кликнув по которой добавляется содержимое слева, а также最开始 добавленная информация--> <div id="map_right"> <div class="shopMsg"> <img src="images/w_map.png"/> <div class="pmname">Название магазина: Petjoy Pet Community</div> <div class="address">Адрес: ул. Чжаннинь, 1258-1260</div> <div class="phone">Номер телефона: (021)53018000</div> </div> </div> </div> <!-- Часть кода JavaScript --> <script type="text/javascript"> window.onload=function(){ getMap(); } // Добавление информации в карту: ajax function getMap(){ // Создание объекта var httpReq; if(window.XMLHttpRequest){ httpReq=new XMLHttpRequest(); } httpReq=new ActiveXObject("Microsoft.XMLHTTP"); } var maplist=document.getElementById("maplist");// Получение списка карт maplist.innerHTML='';// Очистка информации, добавленной в карту в html // Определение回调 функции, которая принимает данные, ответившие из базы данных. // onreadystatechange():存储函数(或函数名)。每当readyState属性改变时,就会调用该函数 httpReq.onreadystatechange=function(){ if(httpReq.readyState==4&&httpReq.status==200){ var jsonobj=JSON.parse(httpReq.responseText); console.log(jsonobj.length);} for (var i = 0; i< jsonobj.length;i++) { maplist.innerHTML+='<div class="mapShop">'+ '<img src="images/fi1.png" style="top:'+jsonobj[i].pmTop+'px; left:'+jsonobj[i].pmLeft+'px"/>'+ '<div id="pmcity'+i+'" onclick="getMessage('+i+')" style="top:'+jsonobj[i].pmTop+'px; left:'+jsonobj[i].pmLeft+'px; position:absolute; padding-top:20px;" '>' + jsonobj[i].pmCity + '</div>'+ '</div>'; } } } //发起请求(打开一个地址) httpReq.open("get", "adress.do", true); //发送,如果提交方式为get,发送为null;如果提交方式为post,哪send里写要发送的参数,没得的话,就写null httpReq.send(null); } //点击获取信息 function getMessage(a){ console.log("M----------1"); var httpReq; if(window.XMLHttpRequest){ httpReq=new XMLHttpRequest(); } httpReq=new ActiveXObject("Microsoft.XMLHTTP"); } var map_right=document.getElementById("map_right"); map_right.innerHTML=''; httpReq.onreadystatechange=function(){ if(httpReq.readyState==4&&httpReq.status==200){ var jsonobj=JSON.parse(httpReq.responseText); console.log(jsonobj.length);} for(var i=0;i<jsonobj.length;i++){ map_right.innerHTML+='<div class="shopMsg">'+ <img src="images/ <div class="pmname">Название магазина: <div class="address">Адрес: <div class="phone">Номер телефона: </div> } } } //инициирование запроса httpReq.open("get", "adressMsg.do?pmId="+a, true); //отправка httpReq.send(null); } </script> </body> </html>
Серверная часть: app.js (JavaScript)
var express=require("express");//引用express var mysql=require("mysql");//引用mysql var app=express();//执行express里的全局函数,返回一个express对象 app.configure(function(){ app.use(app.router);//路由,配置路由时,先执行,用户定义的拦截地址 app.use(express.static(__dirname+"/public"));//设置静态资源路径 app.use(express.errorHandler());//开发者模块,将错误显示在html上 }); app.get("/adress.do",function(req,res){ //console.log("d-----------1"); //建立数据库连接,建立桥梁 var myconn=mysql.createConnection({ host:"localhost", port:"3306", user:"root", password:"123456", database:"pet" }); //打开连接 myconn.connect(); var sql="SELECT * FROM petmap"; //console.log(sql); myconn.query(sql,[],function(err,data){ //console.log(err); //console.log(data); res.send(data); }); //关闭连接 myconn.end(); }); //城市点击响应 app.get("/adressMsg.do",function(req,res){ var pmId=req.query.pmId; console.log(pmId); //建立数据库连接,建立桥梁 var myconn=mysql.createConnection({ host:"localhost", port:"3306", user:"root", password:"123456", database:"pet" }); //打开连接 myconn.connect(); console.log("f------------1"); var sql="SELECT * FROM petmap WHERE pmId=?"; console.log(sql); var id=parseInt(pmId); myconn.query(sql,[id+1],function(err,data){ console.log(err); console.log(data); res.send(data); }); //关闭连接 myconn.end(); }); //监听端口号 app.listen(8888,function(){//监听 console.log("express监听成功!"); console.log(__dirname); });
数据库mysql信息:
CREATE DATABASE pet; /*宠物店地图*/ CREATE TABLE petmap(/*宠物店*/ pmId INT AUTO_INCREMENT PRIMARY KEY,/*宠物店id*/ pmName NVARCHAR(60),/*宠物店名*/ pmCity NVARCHAR(20),/*宠物店所在城市*/ pmAddress NVARCHAR(100),/*宠物店所在详细地址*/ pmImg VARCHAR(60),/*宠物店图片*/ pmPhone VARCHAR(30),/*宠物店电话号码*/ pmTop FLOAT,/*宠物店位置上面*/ pmLeft FLOAT/*宠物店位置下面*/ ) /*插入信息*/ INSERT INTO petmap(pmName,pmCity,pmAddress,pmImg,pmPhone,pmTop,pmLeft) VALUES ('邛崃邛临美多宠物服务部', '成都', '成都市邛崃市长松路296号', 'map1.png', '15202891690', 360, 320), ('谐和宠物医院', '德阳', '德阳市旌阳区珠江西路300号', 'map2.png', '0838-6181255', 320, 350), ('天宁动物医院', '西安', '西安市新城区韩森路', 'map3.png', '028-81836050', 260, 240), ('宠美康动物医院', '乌鲁木齐', '乌鲁木齐市天山区幸福路774号', 'map4.png', '0991-2654158', 210, 170), ('绵阳康贝动物诊所', '绵阳', '绵阳市游仙区东津路5-2号', 'map5.png', '0816-2987186', 315, 335), ('圣心动物医院', '重庆', '重庆市九龙坡区大公馆九龙大厦3-2', 'map6.png', '023-68820999', 360, 380), ('吉祥宠物医院(油榨街店)', '贵阳', '贵阳市南明区油榨街花鸟市场宠物区', 'map7.png', '0851-88275946', 400, 380), ('常德市武陵区动物医院', '常德', '常德市武陵区青年路478号', 'map8.png', '0736-7236814', 230, 393), ('爱尔宠物', '郑州', '郑州市金水区金水东路3-6号', 'map9.png', '0371-69193157', 300, 453), ('长沙市博旺宠物诊所', '长沙', '长沙市天心区西牌楼街41号附近', 'map10.png', '0731-82329801', 370, 443), ('大嘴狗宠物医院', '合肥', '合肥市庐阳区北一环与肥西路交口向南', 'map11.png', '0551-64286773', 330, 500), ('秦皇岛市宠物医院', '秦皇岛', '秦皇岛市海港区海阳路9号', 'map12.png', '0335-3076769', 165, 540); INSERT INTO petmap(pmName,pmCity,pmAddress,pmImg,pmPhone,pmTop,pmLeft) VALUES ('乖巧宠物医院', '天津', '天津市河东区万东路77号(近8630医院)', 'map13.png', '13820105131', 195, 510), ('Пекинский ветеринарный госпиталь','Пекин','Пекинский ши Цзибаочжанбинли 14-й улица','map14.png','010-88377484',198,490), ('Ai Chong Zhi Животноводческая клиника','Харбин','Нанхан Куанду Сяндунцзячжэ 37-й улица','map15.png','0451-82516177',80,625); INSERT INTO petmap(pmName,pmCity,pmAddress,pmImg,pmPhone,pmTop,pmLeft) VALUES ('Ласа Мiaoiao Anxin Pet Clinic','Тибет','Ласа Шэнгуаньцюна Цзинцзиньлу Чендун Ганъин 1-й этаж','map16.png','0891-6223291',360,170);
Конечный результат:
Результаты: вышеупомянутые примеры кода, написанные с помощью базы данных и метода AJAX, помогут вам. Если у вас есть какие-либо вопросы, пожалуйста, оставьте комментарий, и я отвечу вам вовремя. В этом я очень благодарен вам за поддержку сайта呐喊 учебник!
Заявление: содержимое этой статьи взято из Интернета, авторские права принадлежат соответствующему автору, контент предоставлен пользователями Интернета, сайт не имеет права собственности, не был обработан вручную, и не несет ответственности за соответствующие юридические вопросы. Если вы обнаружите контент,涉嫌侵犯版权, пожалуйста, отправьте письмо по адресу: notice#oldtoolbag.com (во время отправки письма замените # на @) для сообщения о нарушении,并提供相关证据. Если будет подтверждено, сайт немедленно удаляет涉嫌侵权的内容。