首先,我们需要让登录接口可以跨域调用,登录之后才能获取其他数据,不然会有权限拦截,提示未登录。
在jeesite中,官方文档中有关于登录接口的调用方法。如下图:
调用链接:

我们可以在浏览器中试一下:

接下来有很重要的一点,@CrossOrigin 具体位置如下:

该注解添加之后,该controller下所有的方法才可以跨域调用。而且,必须指明请求方法,如:
method = RequestMethod.GET。
接下来测试跨域,我这里使用的是Hbuilder,端口不一样,所以可以测试。
html+js代码如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
</head>
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript">
function flag(){
//alert(1);
var url = 'http://127.0.0.1:9999/js/a/login?__login=true&__ajax=json&username=F3EDC7D2C193E0B8DCF554C726719ED2&password=235880C505ACCDA5C581A4F4CDB81DA0';
$.ajax({url:url,success:function(result){
/*var new = JSON.stringify(result);*/
//alert(result);
//alert(JSON.stringify(result));
console.log(JSON.stringify(result));
var sid = result.sessionid;
$("#bbb").val(sid);
alert(sid);
}});
//alert("登录成功");
}
function flag2(){
//alert(2);
var ssid = $("#bbb").val();
var url1 = 'http://127.0.0.1:9999/js/a/employees/employees/listData.json?__sid='+ssid;
$.ajax({
type: "POST",
url: url1,
data: {sid:ssid},
dataType: "json",
success: function(result){
alert(result);
alert(JSON.stringify(result));
console.log(JSON.stringify(result));
var data = result.list;
$("#tb1").empty("");
var tr = "<tr>"
+"<th>姓名</th>"
+"<th>年纪</th>"
+"<th>出生日期</th>"
+"<th>电话</th>"
+"<th>目前待遇</th>"
+"<th>期望</th>"
+"<th>申请职位</th>"
+"</tr>";
var td = "";
for (var i in data) {
td += "<tr><td>"+data[i].name+"</td>"
+"<td>"+data[i].age+"</td>"
+"<td>"+data[i].birthday+"</td>"
+"<td>"+data[i].phone+"</td>"
+"<td>"+data[i].presenttreatment+"</td>"
+"<td>"+data[i].expectedtreatment+"</td>"
+"<td>"+data[i].jobapplication+"</td></tr>"
}
$("#tb1").append(tr+td);
}
});
}
</script>
<body>
<input type="button" name="" id="aaa" value="登录" onclick="flag()"/>
<input type="button" name="" id="aaa2" value="获取数据" onclick="flag2()"/>
<input type="text" name="" id="bbb" value="" />---sid
<table border="" cellspacing="" cellpadding="" id="tb1">
<tr>
<th>姓名</th>
<th>年纪</th>
<th>出生日期</th>
<th>电话</th>
<th>目前待遇</th>
<th>期望</th>
<th>申请职位</th>
</tr>
<tr>
<td>data.name</td>
<td>Data</td>
<td>Data</td>
<td>Data</td>
<td>Data</td>
<td>Data</td>
<td>Data</td>
</tr>
</table>
</body>
</html>
这里需要引入js。
我设置的服务器端口为9999,hbuilder端口为8020,跨域调用成功。
点击登录登录成功,我把sessionid获取到放到一个文本框中。
在请求数据的时候,吧sessionid带上,相当于一个令牌。这时候服务器知道你已经登录了,不会进行拦截。

请求数据返回结果如下:

渲染到页面上,效果如下:

这里如何返回json数据官方文档也有说明:

跨域问题解决了,就可以实现前后台分离,或者app后台接口开发了。用了两天,jeesite确实挺爽。
有问题欢迎大家指正。
1万+

被折叠的 条评论
为什么被折叠?



