该文章或问题已被删除

Ajax 获得服务器数据 和 提交数据

开发APP时少不了向服务器请求数据或提交数据给服务器,我们使用 Ajax 来获得数据和提交数据。

APP是一个本地的客户端,相当于一个手机浏览器,在向服务器请求数据时,会遇到Ajax跨域 Access-Control-Allow-Origin 问题,服务器不允许它访问资源,

这时我们需要在相应的后端语言处理下,允许服务器某个文件可以被跨域访问。

 例如:PHP , 我们在PHP 文件里添加以下代码,就可以允许这个文件被跨域访问

header('Content-type:text/json'); // 输出JSON 格式
header('Access-Control-Allow-Origin:*'); //则允许所有域名的脚本访问该资源
header('Access-Control-Allow-Credentials',true); //默认ture 不用理它
header('Access-Control-Allow-Methods', 'POST, GET'); //允许那些方法访问
header('Access-Control-Allow-Headers','x-requested-with,content-type'); //自定义的头信息


  Ajax,这里我们用的是MUI移动框架封装的 mui.ajax 方法来获得数据和提交数据

            
              mui.ajax("网址",{
			data:data,
			dataType:'json',//服务器返回json格式数据
			type:'get',//HTTP请求类型
			timeout:10000,//超时时间设置为10秒;
			success:function(data)
			{		
			    
			},
			error:function(xhr,type,errorThrown)
			{   	
			
			}
		});	


 除 mui.ajax 外mui还有三个 简化的请求和获得数据的方法,


方法名称例子说明
mui.post()
mui.post('login.php',{username:'username',password:'password'
},function(data)
{
//服务器返回响应
},'json');
不处理timeout和异常, 返回数据,可以是JSON 格式,也可以是文本,要返回文本,把json 去掉就可以
mui.get()
mui.get('list.php',{category:'news'},function(data)
{
//获得服务器响应
},'json');
不处理timeout和异常, 返回数据,可以是JSON 格式,也可以是文本,要返回文本,把json 去掉就可以
mui.getJSON()
mui.getJSON('list.php',{category:'news'},function(data)
{
//获得服务器响应
});
不处理timeout和异常, 返回数据,只能是JSON 格式


 APP 客户端与服务器 交互信息,一般都是采用JSON 方式比较多,下面示例:

1.APP 客户端请求数据,下是JS 

              var data={"id":"12","type":"news"};
              mui.ajax("http://ss.html5-app/list.php",{
			data:data,
			dataType:'json',//服务器返回json格式数据
			type:'get',//HTTP请求类型
			timeout:10000,//超时时间设置为10秒;
			success:function(data)
			{		
			    //服务器返回数据
			},
			error:function(xhr,type,errorThrown)
			{   	
			   //如果出错
			}
		});

 

2. 后端 PHP 文件 接收并返回数据

<?php

header('Content-type:text/json'); 
header('Access-Control-Allow-Origin:*');
header('Access-Control-Allow-Credentials',true);
header('Access-Control-Allow-Methods', 'POST, GET'); 
header('Access-Control-Allow-Headers','x-requested-with,content-type');

if($_SERVER['REQUEST_METHOD']=='GET') //判断客服端是以GET还是POST 方式提交
{
$id=isset($_GET["id"])?$_GET["id"]:exit();
$type=isset($_GET["type"])?$_GET["type"]:exit();
}
else
{
$id=isset($_POST["id"])?$_POST["id"]:exit();
$type=isset($_POST["type"])?$_POST["type"]:exit();
}

//业务处理,读取数据库返回相关数据给客户端,客户端需要返回JSON 格式数据
    $data=array();
    $data["id"]=$id;
    $data["type"]=$type;

echo json_encode($data); //把数组转为JSON 格式数据返回给客户端


?>

点赞 0      收藏 1

0 个评论

正在加载...

这里空空如也,快来补一刀!

加载更多

回答问题或评论文章请先 或者 注册