张剑
张剑
  • 发布:2015-01-27 23:19
  • 更新:2018-01-10 10:52
  • 阅读:24786

mui.ajax如何解决跨域问题

分类:MUI

1、我后台使用C#发布了一个webservice。
2、在pc端使用ajax jsonp可以访问。
3、在移动端使用zepto使用同样的代码则无法解决。

请教下,谢谢!!!

2015-01-27 23:19 负责人:无 分享
已邀请:
jclarry

jclarry

你确定你的webservice jsonp可以了。你用jquery的再试试

  • 张剑 (作者)

    $("#Jsonp").click(function(){

    $.ajax({

    type:"POST",

    url:"http://192.168.198.210/Web/WebService.asmx/UserLogin",

    data:{username:'admin',password:'admin'},

    dataType:'jsonp',

    jsonp:'callback',

    jsonpCallback:'add'

    success:function(data){

    $("#result").text(data.msg);

    }

    });

    })

    在PC端使用jquery测试通过

    2015-01-28 09:04

  • myzyq

    回复 张剑:你使用的mui直接调用的$ajax直接成功了?

    2015-06-09 19:33

DCloud_UNI_FXY

DCloud_UNI_FXY

在5+客户端内,mui.ajax支持直接跨域访问html,json,xml,text,目前暂不支持jsonp

  • 张剑 (作者)

    跨域访问json如何搞,实际上我的需求就是和服务器进行通信

    2015-01-28 09:05

  • jclarry

    让你的webservice不要支持jsonp一种方式,然后再交互试试

    2015-01-28 11:23

  • DCloud_UNI_FXY

    mui.getJSON(url,function(response){console.log(JSON.stringify(response));})

    2015-01-28 13:19

  • myzyq

    回复 DCloud_UNI_FXY:你说的能不能再详细一些,这样根被行不懂?自带的ajax根本不能跨域访问

    2015-06-09 19:31

  • DCloud_UNI_FXY

    回复 myzyq:你是要在普通浏览器做跨域?如果是这样的话,暂时你可以使用dataType:script的方式,服务器端返回一个可执行的js片段

    2015-06-10 03:05

  • myzyq

    回复 DCloud_UNI_FXY:谢谢,电脑端依然没有解决,但是在手机上面测试的时候,成功了。直接可以跨域访问!昨天一直在电脑上测试所以没成功。

    2015-06-10 15:57

  • DCloud_UNI_FXY

    回复 myzyq:必须在真机联调或真机运行或模拟器中才行的,普通浏览器是会出现跨域

    2015-06-10 16:01

  • 机智的小丸子

    回复 DCloud_UNI_FXY:浏览器跨域问题如何解决?

    2015-10-05 16:27

myzyq

myzyq

请问楼主最后怎么样了?问题解决了吗?

粥冰

粥冰

我的是通过设置服务器来解决的

alongSelf

alongSelf

楼主 解决出出来告诉大家一声

alongSelf

alongSelf

我的问题已经解决

后台代码如下:
public static void reSponseJson(String string,HttpServletResponse response) {
response.setContentType("text/json; charset=utf-8");
response.setHeader("Access-Control-Allow-Origin", "");
response.setHeader("Access-Control-Allow-Headers", "X-Requested-With");
response.setHeader("Cache-Control", "no-cache");
PrintWriter out = null;
try {
out = response.getWriter();
out.print(string);
out.flush();
} catch (IOException e) {
e.printStackTrace();
} finally {
out.close();
}
}
ajax 代码如下:
var url = "http://192.168.1.100/lpAppService/JobMngController.do?action=jobListForPage";
mui.ajax(url, {
data: {
rows: rows,
page: page
},
//dataType: 'json', //服务器返回json格式数据
type: 'post', //HTTP请求类型
timeout: 1000, //超时时间设置为10秒;
success: function(data) {
console.info(data);
},
error: function(xhr, type, errorThrown) {
//异常处理;
console.log(type);
}
});
问题出在:一定要在head里面加上
<meta http-equiv="Access-Control-Allow-Origin" content="">
<meta http-equiv="content-security-policy">

head里面的内容如下:
<head>
<meta charset="utf-8">
<title>Hello MUI</title>
<meta http-equiv="Access-Control-Allow-Origin" content="*">
<meta http-equiv="content-security-policy">
<meta name="viewport" content="width=device-width, initial-scale=1,maximum-scale=1,user-scalable=no">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
</head>

  • 小蚂蚁

    能成功吗

    2015-09-17 22:41

  • alongSelf

    很成功 我自己就是这么写的

    2015-09-24 21:07

  • SSDNJ

    回复 alongSelf:楼主,为啥我servlet进去了,但是返回时候,ajax只走了error,却不走success

    2016-07-22 10:39

  • maomaomaoz

    这并没什么用

    2017-09-25 16:14

智学无忧

智学无忧

找到源码 mui.js,大概在2968行,把 setHeader('X-Requested-With', 'XMLHttpRequest'); 这段代码注释掉。
本人亲测可以。

无聊看看网

无聊看看网 - 无聊就上无聊看看网https://www.wuliaokankan.cn

能开发个https://www.wuliaokankan.cn无聊看看网无聊看看网客户端不?

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