gpt4 book ai didi

javascript - 无法在 Phonegap Android 中打开 Assets URL : file:///android_asset/www/submit? 用户名=Admin&密码=super%401234?

转载 作者:行者123 更新时间:2023-12-01 05:42:21 27 4
gpt4 key购买 nike

我对 Phonegap 和 Javascript 完全陌生。我正在尝试将登录表单中的用户名值和密码值保存到 sqlite 数据库中。

这是我的login.html 文件:-

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>Login</title>
<link href="css/style.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="js/jquery-2.1.3.min.js"></script>
<script type="text/javascript" src="js/iscroll.js"></script>
<script type="text/javascript" src="js/login.js"></script>

</head>

<body>
<div class="wrapper">
<form action="submit" id="login" name="login_form">
<input type="text" id="uName" name = "UserName" placeholder="Username" value="Admin"/>
<br/>
<input type="password" id="password" name = "Password" placeholder="Password" value="super@1234"/>
<br/>
<button type="submit" id="submit" value="Submit">Login</button>
</form>
<script type="text/javascript">
$(document).ready(function() {
$("#submit").click(function() {
if($("#uName").val()==""){
alert("Please fill username field.");
//$("#uName").focus();
}
else if($("#password").val()==""){
alert("Please fill password field.");
//$("#password").focus();
}
else {
onDeviceReady();
}
});
});
</script>

</div>
</body>
</html>

这是我的 login.js 文件:-

var db;

document.addEventListener("deviceready", onDeviceReady, false);

function onDeviceReady() {
db = window.openDatabase("UserDB", "1.0", "Login", 10000);
db.transaction(populateDB, transaction_err, populateDB_success);
}

function populateDB(tx) {

var userName = document.getElementById("uName").value;
var password = document.getElementById("password").value;

tx.executeSql('CREATE TABLE IF NOT EXISTS users (ID INT, USERNAME VARCHAR UNIQUE, PASSWORD VARCHAR)');
tx.executeSql('INSERT INTO users (ID,USERNAME,PASSWORD) VALUES ("'+1+'","'+userName+'","'+password+'")');
alert("" + userName + " " + password);
}

function transaction_err(tx, error) {
alert("Database Error: " + error);
}

function populateDB_success(tx) {
alert("Data successfully entered.");
window.open("file:///assets/www/view_login.html");
}

我的问题是,当我在 Android 设备中运行此代码时,它给了我应用程序错误:存在网络错误并且错误日志是:-

04-30 10:16:35.080  31868-31868/com.itpp.trt D/CordovaWebViewImpl onPageDidNavigate(file:///android_asset/www/submit?UserName=Admin&Password=super%401234)
04-30 10:16:35.080 31868-31934/com.itpp.trt E/AndroidProtocolHandler﹕ Unable to open asset URL: file:///android_asset/www/submit?UserName=Admin&Password=super%401234
04-30 10:16:35.090 31868-31868/com.itpp.trt D/SystemWebViewClient﹕ CordovaWebViewClient.onReceivedError: Error code=-1 Description=There was a network error. URL=file:///android_asset/www/submit?UserName=Admin&Password=super%401234

我找不到问题出在哪里,请帮助我。感谢并抱歉问了这么长的问题。 :)

最佳答案

表单正在尝试将提供的数据提交到网址:'file:///android_asset/www/submit'。网址通过 action 提交<form> 内的属性标签:

<form action="submit" id="login" name="login_form">

要防止这种情况发生,只需从标记中取出操作属性即可。

由于您是 Phonegap/Cordova 的新手,您可能不知道您不应该等待 document.ready事件而是 deviceready 。现在,当您更改此设置时,您的表单提交可能将不再有效。这是因为deviceready当应用程序启动并准备使用时,事件会触发一次。它不会等待按钮单击或 deviceready 中声明的函数。功能。

我们怎样才能让它再次发挥作用?这很简单,只需在单击提交按钮时调用一个函数即可。您需要执行以下操作:

<form id="login" name="login_form" onsubmit="mySubmitFunction();">

被调用的函数应该如下所示:

function mySubmitFunction(){
$("login").unbind("submit"); //this removes the submit event-handler from the form
if($("#uName").val()==""){
alert("Please fill username field.");
}
else if($("#password").val()==""){
alert("Please fill password field.");
}
else {
//insert into your database
db.transaction(populateDB, transaction_err, populateDB_success);
}
}

在 onDeviceReady 函数中只需打开数据库:

function onDeviceReady() {
db = window.openDatabase("UserDB", "1.0", "Login", 10000);
}

关于javascript - 无法在 Phonegap Android 中打开 Assets URL : file:///android_asset/www/submit? 用户名=Admin&密码=super%401234?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29959598/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com