jquery ajax 跨域访问

代码基于 servlet 项目,部署到服务器时碰到跨域问题,请求不到数据,朋友推荐了这种写法,经测试可用。

下面是JS代码: 

$.ajax({
    type:"post",
    url:"http://域名或IP:端口号/项目名/servlet名称",     //url写异域的请求地址
    data:{"type":"checkMember","desNo":logDesNo,"openId":openId,"brand":brandid},
    dataType:"jsonp",     //加上datatype
    jsonp: "callback",    //服务端用于接收callback调用的function名的参数
    contentType:"application/json;charset=uft-8",
    success:function(data){
        if(data.status=="success"){
            alert("success");
        }else{
            alert("当前手机号暂未注册.请前往注册.");
        }
        console.log(data);
    },error:function(data){
        console.log("请求异常");
    }
});

Java 代码:

@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException{
    resp.setContentType("text/json;charset=UTF-8");
    PrintWriter out = resp.getWriter();
    String type = req.getParameter("type");
    Map<String, Object> map = null;
    String a = null;

    //对应 JS 中的jsonp:"callback"
    String callback = req.getParameter("callback");
    if("checkMember".equals(type)){
        String desNo = req.getParameter("desNo");
        String brand = req.getParameter("brand");
        String openId = req.getParameter("openId");
        Object[] params = {desNo,brand,openId};
        map = new HashMap<String, Object>();
        int checkresult = 0;
        try {
            checkresult = cs.checkMember(params);
            System.out.println(checkresult);
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
    //封装成 jsonp 的返回格式
    JSONObject json = JSONObject.fromObject(map);
    a = callback+"(" + json.toString() + ")";
    out.print(a);//输出返回值
    out.flush();
    out.close();
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值