1. 程式人生 > >Ajax跨域請求以及亂碼解決

Ajax跨域請求以及亂碼解決

亂碼 發送 ajax跨域請求 ESS rac post ren control enc

  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的表達式即可;

Ajax跨域請求以及亂碼解決