首頁 >web前端 >js教程 >利用JQuery和Servlet實作跨網域提交請求範例分享_jquery

利用JQuery和Servlet實作跨網域提交請求範例分享_jquery

WBOY
WBOY原創
2016-05-16 17:00:40970瀏覽

原理:JavaScript的Ajax不可以跨域,但是可以透過向本地的一個Servlet發出請求,由Servlet完成跨域。再把遠端的結構回傳給客戶端。這樣Ajax就可以跨域了。後面,再發一個PHP版的,請大家注意啊。下面是程式碼

JS代碼:

注意:在Post方式時,param1和param2為向遠端發送的參數值,可以有多個。

複製程式碼 代碼如下:

//GET方式    var url = "http://www.baidu.com";//遠端請求位址
    var param = {'requesturl':url,'typedata':'JSON'};
    var data = getCrossDomainProxyRemote(param,"json");
}
//Post方式
function reqeustCrossDomainProxyPost(param1,param2){
>    var param = {'requesturl':url,'typedata':'JSON','param1':param1,'param2':param2};
    var data = getCrossDomainProxyRemote(param,"json"); }

/**
 * JS向本址的一個Servlet發送POST請求,所有關於遠端請求的參數。  * 在此處參POST方式發送給Servlet

 * @param param 遠端請求參數
 * @param rtype JS回傳類型(暫時沒有用到)
 * @return
 */
function getCrossDomainProxyRemote(param,rtype){
    var url = "/cross/proxy";//Servlet的URL位址
位址$.ajax({
        url: url,type: 'POST',dataType: rtype,timeout: 40000,data:param,async:false,
 status);},
        success: function(data){returndata=data;}
    });
    return returndata;
});
    return returndata;Java程式碼:


複製程式碼

程式碼如下:

public class CorssDomainProxy extends HttpServlet {

    public void doGet(HttpServletRequest req, Http@ IOException {
        this.doPost(req, resp);    
    }

    public void doPost(HttpServletRequest req, HttpServletResponse resp)
      boolean requestType = false;//標記遠端請求類型,預設為GET方式
        PrintWriter out = resp.getWriter();
        Enumeration keys = req.getParameterNames();//取出客戶端傳入的所有參數名稱
    String url=null;
        while (keys.hasMoreElements()){
           🎝>*/
            if(key. equals("requesturl")){//判斷參數是否為,遠端請求位址
                url = req.getParameter(key);
    url = req.getParameter(key);
    url = req.getParameter(key);
            }else if(key.equals("returntype")){//// 🠎>                para.add(key);//其它加入參數列表,此處為參與遠端請求的參數
                }
        }

        HttpClient client = new HttpClient();
        HttpMethod 甲基,false:GET
            method = new UTF8PostMethod(url);
                String _value = req.getParameter(name);
                ((PostMethod )method).setParameter(name,_value);
            }
        }       }      
        client.executeMethod(method);//執行請求
        String bodystr = method.getResponseBodyAsString();//回傳結果
         > */
    private static class UTF8PostMethod extends PostMethod {
        public UTF8PostMethod(String url) {         @Override
        public String getRequestCharSet() {
            return "UTF-8";
        }
    }

}
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn