我正在开发一个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>
我的申请结构如下所示:
错误代码是: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
需要建议人员。
答案 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
)。