当前位置: 移动技术网 > IT编程>网页制作>CSS > jqueryajax跨域访问解析

jqueryajax跨域访问解析

2019年04月19日  | 移动技术网IT编程  | 我要评论

高一峰,综艺传奇方琼,电子商务专业

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

下面是js代码:

$.ajax({
    type:"post",
    url:"https://域名或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 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();
        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();
}

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网