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的表达式即可; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |