个人认为前后端分离的开发模式真的非常棒,通过ajax进行前后端的交互,及时,方便,快捷,反正我是觉得挺好的就是了,好了,不废话,进入正题了。
前后端分离,接下来要解决的一个问题,就是跨域,跨域有很多方法,我用的是我的师傅交给我的,好用得不得了,哈哈哈哈。。。
咳咳,又跑偏了。
首先,第一部,准备php环境,这个呢,大家就自行百度了。网上一搜教程很多。
最终我们会得到一个WWW文件夹。
把你的前端项目,看清楚,是前端项目,放进这个文件夹。
如下图:
然后,再准备一个跨域的php文件:ajax.php 放在你的项目中
<?php
/*
type post
http://localhost/ajax.php
request_url //请求的api
VIN //要传递的参数
*/
function Post($url, $post) {
if (is_array($post)) {
ksort($post);
$content = http_build_query($post);
$content_length = strlen($content);
$options = array(
'http' => array(
'method' => 'POST',
'header' =>
"Content-type: application/x-www-form-urlencoded\r\n" .
"Content-length: $content_length\r\n",
'content' => $content
)
);
return file_get_contents($url, false, stream_context_create($options));
}
}
$request_url = $_POST['request_url'];
$response = Post($request_url , $_POST);
echo $response;
?>
以上是 ajax.php 的内容
以下是重点了,如何使用:
通过ajax访问接口,在访问接口之前,先过这个ajax.php,就可以轻松解决跨域问题了。
$.ajax({
url: 'ajax.php',//跨域的ajax.php,地址根据你放的路劲而定,我的是跟html在一个文件夹下的
type: 'POST',//请求方式
async: false,//是否异步
contentType: "application/x-www-form-urlencoded; charset=utf-8",
data: {
request_url: '接口地址',
param1: value1, //每个参数用逗号(英文“,”)隔开
param2: value2 //最后一个参数后面不需要逗号 有多少参数,就写多少就行,param名称跟后端接口参数名称对应
},
dataType: 'json',//返回的数据格式
success: function(data, textStatus, jqXHR) {//data:返回的json数据
//访问接口成功返回时,运行这里的内容。
},
error: function(XMLHttpRequest, textStatus) {
//接口访问失败(各种原因)时,运行这里的东西。
}
});
以上就是ajax访问接口的方式。
用了很久了。一直用这个,很方便,唯一就是要准备php环境,当然还有很多解决跨域的方法
以此作为记录,以后还有用得着的地方。