MUi开发: mui.post学习心得、php做后端和跨域的解决办法

时间:2022-08-28 11:36:29

正题,先来看看什么是mui.post吧,

mui团队对mui.post的解释

mui.post()方法是对mui.ajax()的一个简化方法,直接使用POST请求方式向服务器发送数据、且不处理timeout和异常(若需处理异常及超时,请使用mui.ajax()方法),使用方法: mui.post(url[,data][,success][,dataType]),如上登录鉴权代码换成mui.post()后,代码更为简洁,如下:

mui.post('http://server-name/login.php',{
username:'username',
password:'password'
},function(data){
//服务器返回响应,根据响应结果,分析是否登录成功;
...
},'json'
});

的却,上面给的很明白,但是我们只知道前端的JavaScript这么写了,但是后端应该怎么写却没有写出来,还有值得注意的是我们做的是移动app的开发,我们在真机调试的时候请求的URL地址应该怎么写他也没有说出,于是我自己摸索了两天,,,终于弄懂了一点。我先贴出我的代码吧

前端代码:

[html] view plain copy
  1. <span style="font-size:18px;"><!DOCTYPE html>  
  2. <html>  
  3. <head>  
  4.     <meta charset="utf-8">  
  5.     <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />  
  6.     <title></title>  
  7.     <script src="js/mui.min.js"></script>  
  8.     <link href="css/mui.min.css" rel="stylesheet"/>  
  9.     <script type="text/javascript" charset="utf-8">  
  10.         mui.init();  
  11.     </script>  
  12.     <style type="text/css">  
  13.         .mui-btn{  
  14.             margin-top: 10px;  
  15.             margin-left: 3px;  
  16.             width: 98%;  
  17.             height: 40px;  
  18.         }  
  19.     </style>  
  20. </head>  
  21. <body>  
  22.     <header class="mui-bar mui-bar-nav">  
  23.          
  24.         <h1 class="mui-title">ajax登录测试</h1>  
  25.     </header>  
  26.     <div class="mui-content">  
  27.        <form class="mui-input-group">  
  28.            <div class="mui-input-row">  
  29.                <label>用户名:</label>  
  30.                <input type="text" class="mui-input-clear" id="name" placeholder="请输入用户名">  //获取用户名  
  31.            </div>  
  32.            <div class="mui-input-row">  
  33.                <label>密  码:</label>  
  34.                <input type="password" class="mui-input-clear" id="psw" placeholder="请输入密码"><span style="white-space:pre">   </span>//获取密码  
  35.            </div></span>  
[html] view plain copy
  1. <span style="font-size:18px;"></span><pre name="code" class="html"><span style="font-size:18px;"><span style="white-space:pre">       </span>//点击是触发onclick事件</span>  
<button type="button" class="mui-btn mui-btn-blue" onclick="init()">验证登录</button></form> </div></body>bian//下面才是要点<script type="text/javascript">function init(){var user=document.getElementById('name').value;//获取表单提交过来的数据 var psw=document.getElementById('psw').value;mui.post('http://192.168.43.5/mapp/mtest/login.php', //请求,地址是服务器本机的ip地址{name:user,//要传送的数据psw:psw},function(data){//服务器返回数据回来时应该做什么的函数if(data=="1"){plus.ui.toast("登录成功");mui.openWindow({url:'login.html',})}else{plus.ui.toast("用户名或密码错误");}},'text');}</script> </html>



其实这个界面都很简单,,,需要注意的是请求的url地址,一定是服务器的本机的ip地址,我就是输错成127.0.0.1地址,在真机调试上不能请求。

下面来看看后端的代码,我用的是PHP做后端


[php] view plain copy
  1. <span style="font-size:18px;"><?php   
  2.         header( "Access-Control-Allow-Origin:*");  
  3.           
  4.         header('Access-Control-Allow-Methods:POST');    
  5. // 响应头设置    
  6.         header('Access-Control-Allow-Headers:x-requested-with,content-type');    
  7.       ini();  
  8.       
  9.       function ini(){  
  10.         $name=$_POST['name'];  
  11.         $psw=$_POST['psw'];  
  12.      // $post= json_decode($post,true);  
  13.        //echo "$post";  
  14.         
  15.       if($name=='kevin'&&$psw=='5817321790'){  
  16.         echo "1";  
  17.       }  
  18.       }  
  19.       
  20. ?></span>  

如果直接用电脑的浏览器访问问题倒是不大,,,但是如果用真机调试,或者用另一个域的浏览器访问,就必须加上这三个头文件,这是跨域提示信息,如果没有将会出错。