后海
后海
  • 发布:2015-03-23 14:45
  • 更新:2018-06-26 21:20
  • 阅读:23516

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

分类:MUI
  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=用户登录测试"}

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

2015-03-23 14:45 1 条评论 负责人:无 分享
已邀请:
mmarquis

mmarquis

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

  • 后海 (作者)

    对头,

    2015-08-05 15:57

  • 一朵羊毛飞上天

    除了127.0.0.1和localhost还有什么本机地址吗?

    2016-08-03 11:10

  • 6***@qq.com

    回复 一朵羊毛飞上天:使用win+r的运行框,输入IPCONFIG就可以查询到自己在局域网中的IP地址

    2018-06-26 21:05

  • 6***@qq.com

    终于解决了!!感谢你,挥泪感谢

    2018-06-26 21:06

  • 9***@qq.com

    对头,我用Hbuiler请求本机数据库,一直error报type=abort,把url改成本机其他ip就成功了!

    2018-09-06 16:38

  • 9***@qq.com

    回复 一朵羊毛飞上天:用ipconfig查看本机IPv4地址!

    2018-09-06 16:40

6***@qq.com

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

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

后海

后海 (作者)

还请dcloud,帮忙解答。

DCloud_UNI_FXY

DCloud_UNI_FXY

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

  • 后海 (作者)

    这个是创建了一个mui的app项目

    2015-03-23 21:12

  • DCloud_UNI_FXY

    是在真机联调报错?真机联调应该不会报这个跨域错误的。

    如果是在真机联调报错,可以把你的ajax放在plusReady之后再调用试试

    2015-03-24 14:59

  • 小蚂蚁

    为什么官网没有类似得例子提供呢,

    2015-09-17 22:40

yuanshuang

yuanshuang

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

p***@qq.com

p***@qq.com

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

x***@tops001.com

x***@tops001.com

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

  • 豆豆宝贝

    在浏览器下,mui.ajax确实是不行,提示跨域错误。后来我改成用$.ajax的形式去写,这个是可以的,mui.min.js中支持这个用法

    2016-11-29 22:00

1***@qq.com

1***@qq.com - 新手

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

2***@qq.com

2***@qq.com

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

火红橘子

火红橘子

解决了吗?

3***@qq.com

3***@qq.com - 晴凯

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

6***@qq.com

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

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

该问题目前已经被锁定, 无法添加新回复