请教Mui.Ajax请求服务器json数据,跨域出错。



  1. Ajax请求代码:

    mui.ajax('http://localhost:8888/istock/api.jsp',{

    data:{

    code: "MS0001",

    token: "un=admin&up=admin",

    data: "un=admin&up=admin&query=2015-03-25&desc=用户登录测试"

    },

    dataType:'json',//服务器返回json格式数据

    type:'get',//HTTP请求类型

    timeout:6000,//超时时间设置为10秒;

    success:function(data){

    //服务器返回响应,根据响应结果,分析是否登录成功;

    data = JSON.stringify(data);

    console.log('success:::' + data);

    alert(data);

    },

    error:function(xhr,type,errorThrown){

    //异常处理;

    console.log(type);

    alert(type);

    }

    });


  2. 服务器端jsp响应输出:

    String code = request.getParameter("code")==null?"":request.getParameter("code").toString();

    String token = request.getParameter("token")==null?"":request.getParameter("token").toString();

    String data = request.getParameter("data")==null?"":request.getParameter("data").toString();

    String json = API.api(new RequestArgs(code,token,data));

    //json

    response.setHeader("Access-Control-Allow-Origin", "*");

    response.setContentType("application/json");


    response.setCharacterEncoding("UTF-8");


    response.setHeader("Cache-Control", "no-cache");


    java.io.PrintWriter pw = null;


    try{


    pw = response.getWriter();


    pw.write(json);


    }catch (Exception e){


    out.println("Error...");

    }finally{


    pw.close();


    }


  3. 浏览器错误提示:

    XMLHttpRequest cannot load http://localhost:8888/istock/api.jsp?code=MS0001&token=un%3Dadmin%26up%3Dad…2015-03-25%26desc%3D%E7%94%A8%E6%88%B7%E7%99%BB%E5%BD%95%E6%B5%8B%E8%AF%95. Request header field X-Requested-With is not allowed by Access-Control-Allow-Headers.

    api.js:56 abort


  4. 服务器拦截到请求数据:

    HTTP API POST: {} {"apiCode":"MS0001","apiToken":"un=admin&up=admin","argsData":"un=admin&up=admin&query=2015-03-25&desc=用户登录测试"}


\n

请教这是什么问题呢?mui.ajax的 error:function 回调函数拦截到了错误信息。为什么服务器已经拦截到请求,并处理了,却接收不到呢?



2015-03-23 14:45 1 条评论 分享
已邀请:
2

这个问题弄了我一天。把mui.min.js打开一条一条追踪,发现一个极为弱智的地方:不要用127.0.0.1或localhost。换成本机其他的IP地址就好了。


1

673011635@qq.com - 90后IT男|CEO|创始人

赞同来自: 1427933751@qq.com

还有就是,如果要跨域,要在url参数中加入?jsoncallback=?
如:http://192.168.0.47/public/api/user/Public/register?jsoncallback=?
亲测可用,折腾了好几天了。。。


0

后海

赞同来自:

还请dcloud,帮忙解答。


0

DCloud_MUI_FXY

赞同来自:

你这个不是在5+客户端的吧。是浏览器的吧?浏览器暂时不支持跨域。如果要跨域。需要jsonp支持。目前mui没有提供jsonp


0

yuanshuang

赞同来自:

解决了吗,我也遇到浏览器一样额报错


0

packychu2008@qq.com

赞同来自:

我也遇到浏览器一样额报错,解决了吗


0

我在开始用MUI的时候也遇见,现目前MUI应该还不支持跨域,至少我还没有找到解决办法


0

1242499484@qq.com - 新手

赞同来自:

XMLHttpRequest cannot load http://10.0.6.53/checkedREG.php. Origin null is not allowed by Access-Control-Allow-Origin.
之前我的注册登录都是好的。不知道后来测试出现了这样的提示,然而注册登录都报这样的错。。。。。为什么呢。。。


0

2324254664@qq.com

赞同来自:

mui.ajax和JQuery.ajax简直就是双胞胎,明白了吗??jquery中的ajax存在跨域问题,这里也存在,另外跨域问题不是在浏览器端,而是在服务器端,服务器后台需要对域进行开放!


0

火红橘子

赞同来自:

解决了吗?


0

33073823@qq.com

赞同来自:

用ie 浏览器测试是可以正常调用,用google 浏览器测试不能跨域


0

673011635@qq.com - 90后IT男|CEO|创始人

赞同来自:

已解决:不要用127.0.0.1或localhost。换成本机其他的IP地址就好了。
使用win+r的运行框,输入IPCONFIG就可以查询到自己在局域网中的IP地址


要回复问题请先登录注册