跨域提交:【和普通的提交只是前台的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方法。