什么是跨域访问,就是我的网站要用你网站的资源
当然我们可以用html发送请求我们网站的后台,通过后台的httpurlconnection去操作其他网站的资源
但是假如我没有后台 页面时静态的只是和com对象交互怎么办了
首先我们可以使用jquery
首先在js开头 导入jquery
{
var jquerjs = document.createElement('script');
jquerjs.id='jquerjs';
jquerjs.type='text/javascript';
jquerjs.encoding='utf-8';
jquerjs.src = "jquery-1.4.2.js";
if (document.body != null)
document.body.appendChild(js);
}
比如通过用户名去取一个xml字符串
function toGetPolicy(userId){
var url=g_bdpsvr +"userReg/getPolicy.do?userId="+userId;
$.ajaxSettings.async = false;
$.ajaxSetup({
async: false
});
$.ajax({
type : "GET",
url : url,
dataType : "script",
async : false,
success : function(json){
policyXml=msg;
hooksubmit();
}
});
}
dataType : "script",
表示是用去获取一个javascript javascript是可以跨域去取的 所以我们在后台用java生成一个方法(这里是用struts2)
public String toGetPolicy() {
String userId = ServletActionContext.getRequest()
.getParameter("userId");
ClientService service = (ClientService) DlpContext
.getApplicationContext().getBean("clientService");
String xml = service.getPolicy(userId, null);
xml=xml.replaceAll("", "");
ServletActionContext.getResponse().setContentType("text/html; charset=utf-8");
try {
ServletActionContext.getResponse().getWriter().print("var msg='"+xml+"';");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
ServletActionContext.getResponse().getWriter().print("var msg='"+xml+"';");
表示获取到了一个变量 var msg=想要的字符串
我们就一再jquery的回调函数中使用 msg变量了
当然 jquery者玩意本来就是用js实现的我们同样可以不用jquery 我们用javascript
var g_bdpsvr=http://192.168.3.4:8080/abc
function toTGetPolicy(userId){
var url=g_bdpsvr +"userReg/getPolicy.do?userId="+userId;
var dataoldjs=document.getElementById("jquerjs");
if(dataoldjs!=null)
document.body.removeChild(dataoldjs);
var datajs = document.createElement('script');
datajs.id='jquerjs';
datajs.type='text/javascript';
datajs.encoding='utf-8';
datajs.src = url;
datajs.onreadystatechange = function(){
var state = datajs.readyState;
if (state == "loaded" || state == "interactive" || state == "complete") {
try{
policyXml=msg;
}catch(e){};
}
}
if(document.body != null)
document.body.appendChild(datajs);
document.body.removeChild(datajs);
}
其实jquery就是这么实现的 效果是一样 同样或以获取到msg变量