PhoneGap中文网

标题: phonegap android端 使用ajax跨域不成功(附带代码) [打印本页]

作者: yangyi919    时间: 2015-5-10 17:09
标题: phonegap android端 使用ajax跨域不成功(附带代码)
首先是android上的代码:
<script>
            $(document ).bind( "mobileinit", function() {
            $.support.cors = true;
            $.mobile.allowCrossDomainPages = true;
            });
    </script>
<script type="text/javascript" charset="utf-8">
        function aa()
        {
                $.ajax({
            type : "GET",
            url : "http://192.168.3.103:80/aaa.php?AjaxType=GetTask&UserID=Adminsys&jsoncallback=?",
            dataType : "jsonp",
            jsonp: 'jsoncallback',
            success : function(Json)
            {
                alert(Json.VoteID);
                alert(Json.VoteName);
                return true;
            }
        });
        }

服务器代码:
<?php
header("Access-Control-Allow-Origin: *");
$items_list=array(
            'result'=>'aaa',
            'page'=>1,
            'totalPage'=>1
        );                    
        $items_list=json_encode($items_list);
        $callback=$_GET['callback'];   
        echo $callback."($items_list)";   
        exit;
?>

android的AndroidManifest.xml文件中配置了:
<uses-permission android:name="android.permission.INTERNET" />
config.xml文件设置:
<access origin="*" />

一起都是按网上的例子写的,但是在真机上跨域不成功,在本机浏览器中能够成功!为何?!
作者: admin    时间: 2015-5-10 18:11
可以看看我们论坛教程 第一季第十讲

不成功检查是不是没有网络

作者: yangyi919    时间: 2015-5-10 18:49
肯定有网络,而且在局域网的
作者: newman    时间: 2015-7-9 12:42
我也是醉了,死活跨域不了。浏览器里跨域访问正常的很。

ajax error给的是
SecurityError:Failed toe execute 'open' on 'XMLHttpRequest':Refused to connect to 'http://len/data' because i violates the document's COntent Security Policy.

Cordova5

AndroidManifest.xml加了
<uses-permission android:name="android.permission.INTERNET" />

config.xml
<access origin="*"/>

$.support.cors = true;
$.mobile.allowCrossDomainPages = true;


$.ajax({
                type: "POST",
                crossDomain: true,
                dataType: "json",
                url: "http://len/data",
                cache: false,
                async: false,
                data:{},
                success: function(html){
                    alert("success ! " + html);
                },
                error:function(XMLHttpRequest, textStatus, errorThrown){
                    alert(XMLHttpRequest);
                    alert(textStatus);
                    alert(errorThrown);
                }
            });
作者: 你懂的    时间: 2015-7-9 21:08
在做webapp时有朋友会发现Cordova 5.0 无法访问外网,404错误了,下文我们一起来看看问题的解决方案。

问题:

最近更换了笔记本,重新配置了开发环境,cordova升了最新的5.0,发现build出来的应用不支持访问外网接口。IOS一切正常,Android访问外网的接口全部报404错误。

解决办法:

方法一:添加白名单插件 cordova-plugin-whitelist ,方便快捷,


cordova plugin add cordova-plugin-whitelist

方法二:添加安全设置


<meta http-equiv="Content-Security-Policy" content="default-src 'self' https://*.MYDOMAIN.com; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval'">
作者: 你懂的    时间: 2015-7-9 21:08
newman 发表于 2015-7-9 12:42
我也是醉了,死活跨域不了。浏览器里跨域访问正常的很。

ajax error给的是

https://github.com/apache/cordova-plugin-whitelist


安装这个插件
cordova plugin add cordova-plugin-whitelist

作者: 传说中滴黑手    时间: 2015-7-15 13:32
跨域请求需要服务器支持的亲 叫后台人员把请求结果用callback()包起来 如callback(任意返回数据)  而其中callback字符 是你客户端的一个请求参数 如 www.baidu.com?id=heishou&callback=?  那么结果就应该是?(任意返回数据)    有比如www.baidu.com?id=heishou&callback=haha   那结果就等于haha(任意返回数据)  后台需要获取callback请求参数的值 然后再把返回数据包起来
作者: doom1981    时间: 2015-8-12 18:11
newman 发表于 2015-7-9 12:42
我也是醉了,死活跨域不了。浏览器里跨域访问正常的很。

ajax error给的是

你好,我新学phonegap,遇到的问题和你一样,也是浏览器里都好使,放到phonegap里就跨域失败,请问这个怎么解决的?
作者: 你懂的    时间: 2015-8-12 21:53
doom1981 发表于 2015-8-12 18:11
你好,我新学phonegap,遇到的问题和你一样,也是浏览器里都好使,放到phonegap里就跨域失败,请问这个怎 ...

这个事后端

http://bbs.phonegap100.com/thread-484-1-1.html
作者: doom1981    时间: 2015-8-13 10:14
测试一把 发表于 2015-8-12 21:53
这个事后端

http://bbs.phonegap100.com/thread-484-1-1.html

谢谢,不过我用的不是jsonp,用的html5 cors,支持post,我在非phonegap环境下,也就是普通网站环境下,在win7下用chrome,file:///d:/test.html 访问 a.com 的跨域请求是成功的,同样代码放入phonegap后,访问a.com 就是403,请问这个是什么原因




欢迎光临 PhoneGap中文网 (http://bbs.phonegap100.com/) Powered by Discuz! X3.2