我为Android创建了一个phonegap应用程序,我将登录“逻辑”放入javascript文件中。有些登录功能有效,有时却没有。如果没有,我会收到以下错误:
10-24 10:01:13.211:Web控制台(25080):未捕获的ReferenceError:url 未在file:///android_asset/www/js/login.js中定义:17
一切都在那里,当我使用cordova2.0.0它工作正常,但我不得不切换到cordova 2.1.0。由于开关它并不总是正常工作。 以下是我在html文件中包含资源的方法:
<html>
<head>
<title>Hello World</title>
<script type="text/javascript" charset="utf-8" src="js/cordova-2.1.0.js"></script>
<link rel="stylesheet" href="css/jquery.mobile-1.1.1.min.css" />
<script type="text/javascript" src="js/jquery-1.8.1.min.js"></script>
<script type="text/javascript" src="js/jquery.mobile-1.1.1.min.js"></script>
<script type="text/javascript" charset="utf-8" src="js/login.js"></script>
</head>
...
这是我的login.js
$('#page_login_submit').live('click',function(){
var name = $('#page_login_name').val();
if (!name) { alert('Please enter your user name.'); return false; }
var pass = $('#page_login_pass').val();
if (!pass) { alert('Please enter your password.'); return false; }
$.ajax({
url: "http://scoreboard.pronovix.net/?q=scoreboard/user/login.json",
type: "POST",
data: 'username=' + encodeURIComponent(name) + '&password=' + encodeURIComponent(pass),
dataType: "json",
error: function(jqXHR, textStatus, errorThrown) {
alert('Login fail: ' + url + '+' + data); //that's line 17
console.log(JSON.stringify(jqXHR));
console.log(JSON.stringify(textStatus));
console.log(JSON.stringify(errorThrown));
},
success: function (data) {
window.location.href = 'index.html';
}
});
return false;
});
有人能说出原因吗?
非常感谢任何帮助!
此致
佐利
答案 0 :(得分:0)
您正在尝试引用url变量以在错误中打印出来,但您尚未在任何地方定义它。
请记住,错误功能无法访问ajax函数的参数。
可能的解决方案
如果你实现了beforeSend功能,你可以保存网址,然后再使用它
beforeSend: function (jqXHR, settings) {
url = settings.url + "?" + settings.data;
}
此解决方案取自Access the URL of an jQuery Ajax Request in the Callback Function