下午在看视频的时候,遇到一个问题:如何把后端 print_r或echo的数据显示在前端。百度了一下,说是用ajax,想着前一阵子学习了ajax,并且最近也想做一个计算器,于是就自己钻起来了。

  计算器的实现是在前端进行的,用JS去写的。后端只是把POST的数据pirnt_r出来,因为post是预定义变量,预定义变量全是数组,所以将其foreach,找到result,并显示在前端页面上。

  废话不多说,先上代码:

HTML/CSS

    <form  action='CALC.php' method='POST'>
<input type='text' name='calc1' id='in1' />
<input type='text' id='sel'>
<input type='text' name='calc2' id='in2'/>
<input type='text' value='='/>
<input type='text' name='result' id='result'/>
<input type='button' name='submit' id='submit' value='click'/>
</form>
input[type='text']{width:20px;}

基本计算功能

var oValue1=document.getElementById('in1');
var oValue2=document.getElementById('in2');
var oBtn=document.getElementById('submit');
var oResult=document.getElementById('result');
var oSel=document.getElementById('sel');
//var oPt=oSel.getElementsByTagName('option'); function calc(a,b,c){
var result=0;
switch (c.value){
case '+':
result=a+b;
break;
case '-':
result=a-b;
break;
case '*':
result=a*b;
break;
case '/':
result=a/b;
break;
}
return result
}

  刚开始我是用select和option做的 加 减 乘 除  但是后来发现原生js很难去获取option 因为select的长度为4,如果使用js去获取select下的option,则难免要用闭包(http://www.cnblogs.com/dirkhe/p/6031426.html),为了简单起见,我还是省去了闭包环节吧。我选择一个input手动输入加 减 乘 除吧。这样获取就容易多了。

  重点看下Ajax

AJAX

oBtn.onclick=function(){
//转换数据类型
var o1=parseInt(oValue1.value);
var o2=parseInt(oValue2.value); //定义一个变量,等会要传到后台去
var info='result='+calc(o1,o2,oSel);
//仅仅是chrome的建立ajax对象
var xhr=new XMLHttpRequest();
//判断ajax对象是否发送
xhr.onreadystatechange=function(){
if(xhr.readyState==4){
oResult.value=(xhr.responseText);
}
}
//建立http请求
xhr.open('post','CALC.php?addr=beji',true);
//post方式的特殊处理,get方式没有
xhr.setRequestHeader('content-type','application/x-www-form-urlencoded');
//发送http请求
xhr.send(info); }

PHP

//遍历
foreach($_POST as $key=>$value){
//输出 value
echo $value;
}

最后看下演示结果

  总结

  可能有时候会觉得画蛇添足,但是确实通过这个小实例,既能复习了之前学的ajax和js,也能学到新东西。东西再小,关键看有没有收获。当然一千人眼里有一千个哈姆雷特,每个人都有自己的看法,这无可厚非。但总的来说,只要每天进步就行。

用ajax获取后端数据,显示在前端,实现了基本计算器功能的更多相关文章

  1. SpringBoot笔记十一:html通过Ajax获取后端数据

    我们知道在Java Web中,前端的JSP可以使用EL表达式来获取Servlet传过来的数据Spring Boot中也有Thymeleaf模板可以使用th: text="${XXX}&quo ...

  2. Jquery 模板插件 jquery.tmpl.js 的使用方法(1):基本语法,绑定,each循环,ajax获取json数据

    jquery.tmpl.js 是一个模板js  ,主要有2个方法 (1):$.template()方法,将一段script或者是Html编译为模板,例如 $.template('myTemplate' ...

  3. ajax获取json数据及实现跨域请求

    最近想练习一下ajax获取json数据 , 首先上网找一些在线的可用来测试的接口. -----------------------------------------------------这里是接口 ...

  4. AngularJS学习笔记(3)——通过Ajax获取JSON数据

    通过Ajax获取JSON数据 以我之前写的与用户交互的动态清单列表为例,使用JSON前todo.html代码如下: <!DOCTYPE html> <html ng-app=&quo ...

  5. vue获取后端数据放在created还是mounted方法里面?

    问题提出: 我们知道一般vue使用ajax或者axios来获取后端数据,并且好像放在created里面和mounted里面都可以获取数据并正确渲染.那么放在created里面和mounted里面有什么 ...

  6. 用ajax获取后台数据,返回json数据,怎么在前台使用?

    用ajax获取后台数据,返回json数据,怎么在前台使用呢?后台 C# code   ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 if (dataType == &qu ...

  7. jquery autocomplete ajax获取动态数据,兼容各浏览器,支持中文

    jquery.autocomplete.js经过改动,支持各种浏览器.支持中文输入! 1.效果图例如以下 2.HTML和ajax代码 <!DOCTYPE html> <html xm ...

  8. JS-利用ajax获取json数据,并传入页面生成动态tab

    封装好的:ajax.js function ajax(url, fnSucc,fnFaild){ //1[创建] if(window.XMLHttpRequest){ var oAjax = new ...

  9. Ajax获取接口数据,url拼接参数跳转页面,js获取上一级页面参数给本页面

    1.Ajax获取接口数据 function demo(){ //假设请求参数 var requestBody = [{ "name":"zhang", &quo ...

随机推荐

  1. 关于Exceptionless日志收集框架会被Fiddler抓包,从而获取到ApiKey的问题

    关于Exceptionless日志收集框架会被Fiddler抓包,从而获取到ApiKey的问题 环境:Exceptionless5.0.0.Linux.WPF客户端.Fiddler 问题:在使用Exc ...

  2. Typescript node starter 3. App Router Controller

    Request request对象表示HTTP请求,并具有请求query字符串.参数.body.HTTP headers等的属性.除了添加新的属性和方法外,还包含原型的属性和方法. 随着系列文章的发布 ...

  3. Windows server 2008R2 中sql server的搭建

    一.安装sql server Step1:下载sql server 2008 r2 standard,解压到Windows的C:\下. Step2:打开安装程序,进行sql server的安装 Ste ...

  4. Storm与SparkStreaming对比

    Storm与SparkStreaming对比 ◆ Spark Streaming 批处理的性能比Storm高出几十倍.◆ Streaming采用小批量模式,Storm是一条消息一条消息的计算.◆ St ...

  5. 怎么下载chrome的扩展程序

    很多时候我们是没办法访问谷歌扩展应用程序 chrome应用商店的,这时候我们最好能把对应扩展应用程序下载保存,以便提供给其他人员使用. 搜索得到知乎有很全的方法: 如何导出并打包第三方chrome扩展 ...

  6. 完美解决方案-雪花算法ID到前端之后精度丢失问题

    最近公司的一个项目组要把以前的单体应用进行为服务拆分,表的ID主键使用Mybatis plus默认 的雪花算法来生成. 快下班的时候,小伙伴跑过来找我,:"快给我看看这问题,卡这卡了小半天了 ...

  7. 微信小程序——导航栏组件

    组件内属性详解   属性 类型 默认值 必填 说明 nav-postion String relative 否 导航栏(包含导航栏以及状态栏)的position,可取值relative.fixed.a ...

  8. go语言开发入门

    go语言开发入门 每个Go程序包含一个名为main的包以及其main函数,在初始化后,程序从main开始执行,避免引入不使用的包(编译不通过) 基础语法 基本数据类型 bool, byte int,i ...

  9. Python基础(闭包函数、装饰器、模块和包)

    闭包函数 格式: def 函数名1(): def 函数名2(): 变量 = 值 return 变量 return 函数名2 func = 函数名1() key = func()

  10. selenium上手

    功能自动化 前提 自动化的主要目的并不是为了找Bug,是为了证明功能可用 不只是所有的功能都可以自动化,如UI 并不是所有的项目都可以使用自动化,如selenium只能使用bs项目,小项目不适合使用自 ...