PhoneGap应用程序无法在Google Ripple上运行

时间:2013-08-23 12:05:53

标签: jquery cordova ripple

我正在开发一个phoneGap应用程序。当我在浏览器中测试我的应用程序时没有问题。万事如意。但是当我在涟漪中尝试它时,我的javascript无效。 详细信息:用户可以登录系统,如果它成功重定向到另一个页面(使用jquery mobile),它在chrome,Internet Explorer和firefox中运行良好。但是在波纹中不起作用。 我的代码如下所示:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no">
    <meta name="apple-mobile-web-app-capable" content="yes">
    <meta name="apple-mobile-web-app-status-bar-style" content="black">
    <title></title>
    <link rel="stylesheet" href="css/jquery.mobile-1.3.2.css">

    <script src="js/jquery-1.10.2.js"></script>
    <script src="js/jquery.mobile-1.3.2.js"></script>
    <script src="js/jquery.base64.js"></script>
    <script src="js/cordova.js"></script>
    <script type="text/javascript">
        $(function() {
            var credentials = 'admin:adminabc';
            var authType = "Basic " + credentials;
            $('#loginForm').submit(function() {
                $.ajax({
                    type : "GET",
                    url :  'http://localhost:30673/api/user/Get',
                    data : 'json',
                    beforeSend : function(xhr) {
                         xhr.setRequestHeader("Authorization", authType);
                    },
                    success : function(data, textStatus) {
                        $.mobile.changePage("#menu", {
                            transition : "slideup"
                        });
                    }
                });
            });

            $("#aboutUs").click(function() {
                $.ajax({
                    type : "GET",
                    url :  'http://localhost:30673/api/AboutMeWA/',
                    data : 'json',
                    beforeSend : function(xhr) {
                         xhr.setRequestHeader("Authorization", authType);
                    },
                    success : function(data, textStatus) {
                        $('#aboutMeTitle').val(data);
                    }
                });
            });
        });

        function onBodyLoad() {
            document.addEventListener("deviceready", onDeviceReady, false);

            function onDeviceReady() {
                document.addEventListener("pause", onPause, false);
                document.addEventListener("resume", onResume,  false);
            }

            function onPause() {
                alert("paused");
            }

            function onResume() {
                alert("resume");
            }

        }
    </script>
</head>
<body onload="onBodyLoad()">
    <div data-role="page" id="mainPage">
        <div data-role="header" data-theme="a" >
            <h4> Ziro </h4>
        </div>
        <div data-role="content">
            <form id="loginForm">
                <div data-role="fieldcontain">
                    <label for="textinput1"> Kullanıcı Adı:     </label>
                    <input name="" id="userName"  placeholder="username" value="" type="text">
                </div>
                <div data-role="fieldcontain">
                    <label for="textinput2"> Password</label>
                    <input name="" id="password"  placeholder="password" value="" type="password">
                </div>
                <input type="submit" data-theme="a" data- icon="arrow-r" data-iconpos="left"
                value="Login">
            </form>
            <a href="#menu" class="ui-link" data- transition="flip">Menü</a>
        </div>
        <div data-role="footer" data-theme="a"  data-position="fixed">
            <h3> FF Yazılım </h3>
        </div>

    </div>
    <div data-role="page" id="menu" data-add-back-btn="true" data-back-btn-text="Geri">
        <div data-role="header" data-theme="a" >
            <h4> Ziro Mobilya </h4>
        </div>
        <div data-role="content">
            <ul data-role="listview" data-divider-theme="a" data- inset="true">
                <li data-role="list-divider" role="heading">
                    Panel
                </li>
                <li data-theme="c">
                    <a href="#about" data-transition="flip"  id="aboutUs"> Hakkımızda </a>
                </li>
                <li data-theme="c">
                    <a href="#page1" data-transition="slide">  Referans Resimleri </a>
                </li>
                <li data-theme="c">
                    <a href="#page1" data-transition="slide"> Servis Resimleri </a>
                </li>
                <li data-theme="c">
                    <a href="#page1" data-transition="slide"> Slogan </a>
                </li>
                <li data-theme="c">
                    <a href="#page1" data-transition="slide"> İstatistikler </a>
                </li>
                <li data-theme="c">
                    <a href="#page1" data-transition="slide">  Button </a>
                </li>
            </ul>
        </div>
        <div data-role="footer" data-theme="a"  data-position="fixed">
            <h3> FF Yazılım </h3>
        </div>
    </div>

    <div data-role="page" id="about" data-add-back-btn="true" data-back-btn-text="Geri">
        <div data-theme="a" data-role="header">
            <h3> Hakkımızda </h3>
        </div>
        <div data-role="content">
            <div style="">
                <img style="width: 288px; height: 100px"  src="http://aknera.com/temp/default/images/background3.jpg">
            </div>
            <a data-role="button" data-theme="a" href="#page1" data-icon="arrow-l"
            data-iconpos="left"> Galeriden Resim Seç </a>
            <div data-role="fieldcontain">
                <label for="textinput2"> Başlık: </label>
                <input name="" id="aboutMeTitle" placeholder=""  value="" type="text" data-mini="true">
            </div>
            <div data-role="fieldcontain">
                <label for="textarea2"> Açıklama </label>
                <textarea name="" id="textarea2" placeholder=""  data-mini="true"></textarea>                                                           




            </div>
            <a data-role="button" data-theme="a" href="#page1" data-icon="alert" data-iconpos="left"> Kaydet </a>
        </div>
        <div data-role="footer" data-theme="a"  data-position="fixed">
            <h3> FF Yazılım </h3>
        </div>
    </div>
</body>
 </html>

我的申请结构如下所示:

enter image description here

错误代码是:xhr_proxy?tinyhippos_apikey = ABC&amp; tinyhippos_rurl = http%3A // localhost%3A30673 / ap i / user / Get%3Fjson rippleapi.herokuapp.com状态代码:500内部服务器错误我获取数据来自我的localhost帖子地址:localhost:30673 / api / user / Get';它在浏览器中运行良好。从localhost获取数据:30673 / api / user / Get。但是在涟漪中,它试图从那里获取数据:xhr_proxy?tinyhippos_apikey = ABC&amp; tinyhippos_rurl = http%3A // localhost%3A30673 / api / u ser / Get%3Fjson rippleapi.herokuapp.com

需要建议人员。

2 个答案:

答案 0 :(得分:24)

您可能遇到的问题是您使用的是Ripple的跨域代理,默认情况下会在设置中启用。

跨域代理有3个设置:“远程”,“本地”和“禁用”。 在我的情况下,我实际上必须禁用它,但在某些情况下,您将能够使用“本地”。

可能的情况:

1)您的本地应用程序在另一台服务器上的某个地方调用远程服务:

根据远程服务器上的配置,您可以使用“远程”或“禁用”。

2)您的本地应用程序位于“localhost”上,并且您正在调用另一个localhost可访问的URL:

您可以使用“本地”或“已禁用”,具体取决于您的跨域设置等。

3)您正在运行一个本地应用程序,该应用程序调用的服务器也是本地的,但是在某个服务器或某些内容使得“localhost”上的代理无法访问:

您需要将其设置为“已禁用”,并确保您的api服务器具有允许跨域请求的设置。最值得注意的是,您需要设置“Access-Control-Allow-Origin”标题。

答案 1 :(得分:2)

我有同样的问题。当我尝试连接到 IISExpress 上托管的WebAPI服务时,就会发生这种情况。

将主机更改为本地IIS 服务器后,错误消失了,我可以使用Ripple连接到我的WebAPI服务。当然,您必须更改指向您服务的网址(在您的情况下为http://localhost:30673)。