hbuilder ajax 不能,Hbuilder编辑App时,ajax跨域访问失败问题

今天试着用Hbuilder写app的前段显示页面,在第一步时就被打住了,ajax异步调用服务器的登录接口时,报错,

显示这样的错误

XMLHttpRequest cannot loadhttp://www.baidu.com/. No ‘Access-Control-Allow-Origin‘ header is present on the requested resource. Origin ‘null‘ is therefore not allowed access.

这个百度的网址是我自己试着玩的,然后我就开始寻找解决的办法。

网上给出的办法好像有两种,我给出我选用的这种,并且亲测成功。

document.getElementById("submitBut").addEventListener(‘tap‘,function ajaxPost(){

mui.ajax(‘http://localhost:8080/demo01/user_service‘, {

data: {

},

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

type: ‘post‘, //HTTP请求类型

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

success: function(data) {

mui.openWindow(‘index.html‘, ‘id‘, {})

},

error: function(xhr, type, errorThrown) {

}

});

});

这个是我App端js的访问代码,如果访问成功就跳转到主界面。

服务器端的话,我是用的struts2,写了一个void action方法来接收ajax的访问,并且返回json格式的数据。

action中的代码如下:

HttpServletResponse response = ServletActionContext.getResponse();

/**

*需要添加下面三行header头

*/

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

response.setHeader("Access-Control-Allow-Methods","POST,GET,OPTIONS,DELETE"); //支持的http 动作

response.setHeader("Access-Control-Allow-Headers","x-requested-with,content-type"); //响应头 请按照自己需求添加。

Map result=new HashMap();

ServletOutputStream out = response.getOutputStream();

result.put("result","success");

result.put("message","message");

result.put("description","description");

JSONObject json = new JSONObject(result);

out.println(json.toString());

然后就可以ajax跨域访问了。

网上还有一种方法是 把ajax中的数据格式从json改成jsonp,我没测试;

还有一种说的是 把mui.js中的代码注释掉一行,这个我测试失败。

还有一种说法,测试项目的时候,不要把地址写成localhost或者127.0.0.1,win+R,输入cmd,输入ipconfig,然后查看自己的ipv4地址,没有测试,大家想要测试的可以试一试,玩意对了呢?

原文:https://www.cnblogs.com/sixgodbiao/p/10492217.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值