ajax跨域问题返回json数据

跨域提交:【和普通的提交只是前台的jsonp后台的返回方式稍微有点区别】

        $.ajax({
                url:"http://localhost:8080/xxx.action",
                type:"get",
                dataType:"jsonp",  //数据格式设置为jsonp

                jsonp:"callback",//后台返回json需要用callback包起来
                data:{"searchNo":searchNo},
                async:"false",
                success:function(data){
                    if(data != null ){
                        //根据busyType跳转页面
                        //回填对象
                        if(data.code ==200){

                          alert(data.message);

                         //业务回填
                        }
                    }
                },
                beforeSend:function(){
                }
            });

后台:

public void xxx.action(){

Stirng id = this.getRequest().getParameter("searchNo");

String callback = this.getRequest().getParameter("callback");

JSONObject json = new JSONObject();

if(StringUtils.isNotBlank(searchNo)){
            ........//业务

         
            json.put("code", 200);
            json.put("message", "success");
        }
          renderText(callback+"("+json.toString()+")");

}

同项目下普通的ajax提交:

        $.ajax({
                url:"http://localhost:8080/xxx.action",
                type:"get",
                dataType:"json",  //数据格式设置为jsonp
                data:{"searchNo":searchNo},
                async:"false",
                success:function(data){
                    if(data != null ){
                        //根据busyType跳转页面
                        //回填对象
                        if(data.code ==200){

                          alert(data.message);

                         //业务回填
                        }
                    }
                },
                beforeSend:function(){
                }
            });

后台:

public void xxx.action(){

Stirng id = this.getRequest().getParameter("searchNo");

JSONObject json = new JSONObject();

if(StringUtils.isNotBlank(searchNo)){
            ........//业务

         
            json.put("code", 200);
            json.put("message", "success");
        }
        renderText(json.toString());

}

----------------------------------------------------------------------------------------------------------------------------------------------------》》》

可能出现情况,后台返回的json方法,前台一直跳转到error的方法,不进入success方法

原因有两种:

1、dataType的方式要确定是jsonp(跨域提交)还是json

2、ajax里面参数url的头地址要和访问的系统头地址要一样,即使是localhost和127.0.0.1也会因为报错而不进入success方法,进入error方法。

你可能感兴趣的:(java,jquery)