ajax跨域(跨项目)
Posted 筑梦前端
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ajax跨域(跨项目)相关的知识,希望对你有一定的参考价值。
潭州
昨天下午修改了ajax跨域的问题,是一个以前的项目但是现在那边后台没有了方法。
所以只能自己写一些假的数据返回到前台。
前台ajax请求:
function jsonImpl(arr){
$.ajax({
type:"post", //请求方式
/* async:true, */ //是否异步
url:"http://127.0.0.1:8080/zttppi/order.WKCS.addNum.hf",
dataType:"jsonp", //跨域json请求一定是jsonp
jsonp: "callbackparam", //跨域请求的参数名,默认是callback
jsonpCallback:"successCallback", //自定义跨域参数值,回调函数名也是一样,
默认为jQuery自动生成的字符串
data:{"gid":arr}, //请求参数
beforeSend: function() {
//请求前的处理
},
success: function(urldata) {
alert("aaaaaa");
},
complete: function() {
//请求完成的处理
},
error: function(XMLHttpRequest,textStatus,errorThrown) {
alert(3);
alert(XMLHttpRequest.status); //请求状态值 200为成功
alert(XMLHttpRequest.readyState); //4 为完成
alert(textStatus); //状态
}
});
}
后台代码:
public class WKCS {
List<GoodsDO> GDOS=new ArrayList<GoodsDO>();
public String gid;
public String price;
public String order_id;
@SuppressWarnings("static-access")
public void addNum(HFContext ctx) {
ctx.input.fillVO(this);
GoodsDO gdo = new GoodsDO();
gdo.setName("苹果");
gdo.setSku("sss");
gdo.setPrice("22");
GDOS.add(gdo);
GoodsDO gdo1 = new GoodsDO();
gdo1.setName("橘子");
gdo1.setSku("sss");
gdo1.setPrice("23");
GDOS.add(gdo1);
GoodsDO gdo2 = new GoodsDO();
gdo2.setName("耐克鞋");
gdo2.setSku("sss");
gdo2.setPrice("233");
GDOS.add(gdo2);
GoodsDO gdo3 = new GoodsDO();
gdo3.setName("匹克衣服");
gdo3.setSku("sss");
gdo3.setPrice("345");
GDOS.add(gdo3);
GoodsDO gdo4 = new GoodsDO();
gdo4.setName("橘子");
gdo4.setSku("sss");
gdo4.setPrice("23");
GDOS.add(gdo4);
try {
String url = ctx.input.getRequestURLAsString();
LogUtil.log("请求url" + url);
/*JSONObject postData = ctx.input.getPostDataAsJSON();*/
// 获取请求参数
String gid = postData.getString("gid");
LogUtil.log("获取请求参数为:" + "gid:" + gid );
//上面的获取参数与方法是按照公司的框架写的 需要改掉
JSONArray json=new JSONArray(); //获取JSONObject对象
String callback = ctx.request.getParameter("callbackparam");
//获取前台的回调函数
String retStr = callback +"("+json.fromObject(GDOS).toString()+")";
// json.fromObject(GDOS).toString()将集合数据转换为json数据
//前台jsonp数据格式为:回调函数+(json类型数据)
例如 successCallback({“name”:“zhangsan”})
ctx.output.returnStringDirectly(retStr);
} catch (Exception e) {
LogUtil.exception(e);
}
}
}
我就是因为在后台返回数据时格式的问题 一直进入error方法中而不进入success中,我在error中让其显示状态码与其他的返回值共有三个,XMLHttpRequest.status ,XMLHttpRequest.readyState,textStatus前两个都是正常的一个显示200,一个显示4 只有最后一个是parsererror表示传送格式不对,后来上网上查询了一下原来jsonp从后台向前台传数据时还要加上回调方法+();
温馨提示:文章素材来源于网络,版权归原作者所有!
以上是关于ajax跨域(跨项目)的主要内容,如果未能解决你的问题,请参考以下文章