Ajax跨域请求以及乱码解决

  Ajax跨域请求2种解决方法

 1 ) 什么叫跨域请求,协议,域名,端口号,其中一样不同都称跨域;

第一种:使用script标签发送请求;

//创建一个script标签;

var v_element=document.createElement("script");

//设置script的type 属性;

v_element.type="text/javascript";

//设置src属性;

v_element.src="http://127.0.0.1:8080/包名/login.do?"+v_data;  //v_data参数;

//把script扔到head标签里面去,给head增加一个孩子;

document.getElementsByTagName("HEAD")[0].appendChild(v_element);

这样怎么调用回调?

在data.jsp上调用回调方法即可

callBack("${data}")

因为使用El表达式,所以必须加双引号;

第二种:在servlet里把头文信息设置,添加下面两行代码就可以了

response.setHeader("Access-Control-Allow-Origin", "*");  //允许所有跨域

response.setHeader("Access-Control-Allow-Methods", "POST,GET");    //post&get两种都允许

 2 ) 什么叫乱码?   --分为两种--

请求数据乱码

尽可能使用post请求避免乱码,后台使用request.setCharacterEncoding("UTF-8")设置请求对象编码

如果非要使用get请求,可以在js页面,将事先需要传递的数据转换成UTF-8格式,后台就可以直接获取了

例:“login.do?”+encodeURI(数据)

响应数据乱码

如果要通过servlet返回响应,servlet需要设置

response.setCharacterEncoding("UTF-8");

response.setContentType("text/html;charset=UTF-8");

通常不推荐这种方式返回信息,推荐用jsp作为响应的页面,这个页面只需要拥有一个El的表达式即可;

猜你喜欢

转载自www.cnblogs.com/J-Joyce/p/9195837.html