gpt4 book ai didi

javascript - HTML 按钮刷新页面而不是将数据发送到数据库

转载 作者:太空宇宙 更新时间:2023-11-04 10:17:10 25 4
gpt4 key购买 nike

在我的 index.html 中,我有一个 button,我以前用它来提交数据,然后将其发送到我的数据库。但是,我最近更改了布局以包含依赖于 CSS 的选项卡。

现在,同一个 button 只会刷新页面,不会对数据做任何事情。我试过更改 button 类型、form、添加 evt.preventDefault() 等,但都无济于事。

这是我的 index.htmlform,为了方便起见,我减少了一些重复的选项卡。

<!DOCTYPE html>
<html ng-app>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0,minimum-scale=1.0">
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/font-awesome/3.1.0/css/font-awesome.min.css" />
<script src ="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.9/angular.min.js"></script>
<% include header %>
<% include navbar %>
<p>
extra &nbsp;&nbsp; space
<body>
<!-- tabs -->
<div class="pcss3t pcss3t-effect-scale pcss3t-theme-1">
<input type="radio" name="pcss3t" checked id="tab1"class="tab-content-first">
<label for="tab1"><i class="icon-calendar"></i>Client</label>
<!-- tab contents -->
<li class="tab-content tab-content-3 typography">
<!-- /container -->
<script type="text/javascript">
$(document).ready(function() {
$('#home').addClass("active");
});
</script>
<h1>Clients</h1>
<div class="container">
<div ng-controller="ClientCtrl">
<span>{{remaining()}} of {{clients.length}} remaining</span> [ <a
href="" ng-click="archive()">archive</a> ]
<ul class="unstyled">
<li ng-repeat="client in clients"><input type="checkbox"
ng-model="client.done"> <span class="done-{{client.done}}">{{client.text}}
</span>
</li>
</ul>
<form ng-submit="addClient()">
<div class="col-lg-6">
<div class="input-group input-group-lg">
<input class="form-control" type="text" ng-model="clientText"
size="30" placeholder="add new client here"> <spanclass="input-group-btn">
<button class="btn btn-primary btn-lg" type="button">Add</button>
</span>
</div>
</div>
</form>
</div>
</div>
</div>

这是我的 Controller 表单:

 function ClientCtrl($scope, $http) {
$scope.clients = [];
$http.get('/client').success(function(data, status, headers, config) {
$scope.clients = data;
if (data == "") {
$scope.clients = [];
}
}).error(function(data, status, headers, config) {
console.log("Ops: could not get any data");
});
}
}
$scope.addClient = function() {
$http.post('/client', {
text : $scope.clientText,
done : false,
}).success(function(data, status, headers, config) {
$scope.clients.push({
text : $scope.clientText,
done : false
});
$scope.clientText = '';
}).error(function(data, status, headers, config) {
console.log("Ops: " + data);
});
};

$scope.remaining = function() {
var count = 0;
angular.forEach($scope.clients, function(client) {
count += client.done ? 0 : 1;
});
return count;
};

$scope.archive = function() {
var oldClients = $scope.clients;
$scope.clients = [];
angular.forEach(oldClients, function(client) {
if (!client.done)
$scope.clients.push(client);
});
};
}

单击按钮时在命令提示符中收到的消息结果为:

GET / 304 2ms
GET /stylesheets/style.css 304 1ms
GET /js/todo.js 404 0ms
GET /js/todo.js 404 0ms

最佳答案

表单提交处理程序(ng-submitonsubmit)旨在将数据提交到表单的 action 属性中提供的路径.没有属性则数据提交到当前地址,页面会刷新。

为避免默认行为,您从 ng-submit 调用的方法必须返回 false。这将防止发生重定向,并允许您的范围更改得以保留。

$scope.addClient = function() {
$http.post('/client', {
text : $scope.clientText,
done : false,
}).success(function(data, status, headers, config) {
$scope.clients.push({
text : $scope.clientText,
done : false
});
$scope.clientText = '';
}).error(function(data, status, headers, config) {
console.log("Ops: " + data);
});
return false;
};

注意根据您的描述,由于在/client 端点上调用 GET 刷新页面后数据未更新,因此您的持久性或数据检索可能存在问题。您的实现应使用 post() 调用存储数据,然后在页面重新加载时使用 get() 调用检索数据。

关于javascript - HTML 按钮刷新页面而不是将数据发送到数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37149643/

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