JSONP实现跨域

JSONP实现跨域

1.AJAX跨域访问

<script type="text/javascript" src="http://manage.jt.com/js/jquery-easyui-1.4.1/jquery.min.js"></script>
<script type="text/javascript">
    $(function(){
        alert("测试访问开始!!!!!")
        
        $.ajax({
            url:"http://manage.jt.com/web/testJSONP",
            type:"get",
            dataType:"jsonp",       //返回值类型callback(data)
            //jsonp: "callback",   //指定参数名称
            //jsonpCallback: "hello",  //指定回调函数名称
            success:function (data){
                alert(data.id);
                alert(data.name);
                //转化为字符串使用
                //var obj = eval("("+data+")");
                //alert(obj.name);
            }    
        });    
    })
</script>

2.后端

@Controller
public class JSONPController {
    
    
    //http://manage.jt.com/web/testJSONP?callback=jQuery111104246765155397203_1541993772596&_=1541993772597
    //@RequestMapping(value="/web/testJSONP",produces="text/html;charset=utf-8")
    //@ResponseBody
    public String testJSONP(String callback) throws JsonProcessingException{
        ObjectMapper objectMapper = new ObjectMapper();
        //String json = "{'id':'1',\"name\":\"tomcat\"}";
        User user = new User();
        user.setId(100);
        user.setName("王思聪吃热狗");
        user.setAge(30);  
        
        String json = objectMapper.writeValueAsString(user);
        return callback + "(" + json +")";
    }
    
    //利用工具类形式实现JSONP
    @RequestMapping(value="/web/testJSONP")
    @ResponseBody    
    public MappingJacksonValue utilJSONP(String callback){
        
        User user = new User();
        user.setId(100);
        user.setName("王思聪吃热狗");
        user.setAge(30);
        MappingJacksonValue value =
                new MappingJacksonValue(user);
        value.setJsonpFunction(callback);
        return value;
        
    }
}

 

posted @ 2019-10-22 22:19  我爱si搬砖  阅读(166)  评论(0编辑  收藏  举报