我在使用此应用程序时遇到了一个特殊问题。它不会始终更新列,并且何时更新和何时更新没有任何规则。 似乎完全是随机的,并且没有让我回到admin.php页面。
此外,当它确实更改/更新了数据库中的条目时,它不会将响应发送到Ajax(警报(“确定”))。下面的代码:
--this is admin.php
<div class="update" style="display:none">
<form method="post" action="adminFunctions.php">
<div class="input-group">
<label>new name</label>
<input class='newNameInput' type="text" name="newName" >
</div>
<div class="input-group">
<label>new last name</label>
<input class='newLastNameInput' type="text" name="newLastName">
</div>
<div class="input-group">
<button type="submit" class="btn changePerson" name="changePerson">change</button>
</div>
</form>
</div>
然后是Jquery:
$(document).ready(function(){
var changeId;
$('.changeMe').click(function () {
var el = this;
var id = this.id;
var splitid = id.split("_");
changeId = splitid[1];
$('.update').css('display', 'block');
});
$('.changePerson').click(function () {
var newNameFor = $('.newNameInput').val();
var newLastNameFor = $('.newLastNameInput').val();
$.ajax({
url: './adminFunctions.php',
type: 'POST',
data: 'changeSth=' + changeId + '&newName=' + newNameFor + '&newLastName=' + newLastNameFor,
success: function(response) {
if(response == 1) {
alert('OK');
} else {
console.log('entry update failed');
}
}
})
});
});
-和adminFunctions.php
if(isset($_POST['changeSth'])) {
$id = $_POST['changeSth'];
$newName = $_POST['newName'];
$newLastName = $_POST['newLastName'];
changeEntry($id, $newName, $newLastName);
}
function changeEntry ($id, $newName, $newLastName) {
global $testConn;
if($id) {
$query = "UPDATE people SET firstName='$newName', lastName='$newLastName' WHERE id=$id";
mysqli_query($testConn, $query);
header('location: admin.php');
echo 1;
} else {
echo 0;
}
header('location: admin.php');
}
谢谢!
答案 0 :(得分:0)
您正在发出AJAX请求,不需要服务器端重定向。如果您确实想这样做,则必须从JS端重定向它。
请从您的PHP代码中删除header('location: admin.php');
。
答案 1 :(得分:0)
我为您创建了示例fiddle。我做了正确的ui示例,您需要在服务器端进行调整。关键的变化是您需要传递数据,而不是通过POST传递ajax中的url。
$('.changePerson').click(function () {
var newNameFor = $('.newNameInput').val();
var newLastNameFor = $('.newLastNameInput').val();
var idFor = $('input[type="hidden"]').val();
var data = {changeSth: idFor, newName: newNameFor, newLastName: newLastNameFor};
$.ajax({
url: './adminFunctions.php',
type: 'POST',
data: data,
success: function(response) {
if(response == 1) {
alert('OK');
} else {
console.error('entry update failed');
}
}
})
});
编辑:
首先要强调的是type ='submit'是为输入或按钮标签而设计的
第二件事是应该通过POST方法或url-string传输数据。从表单html获取数据的方法很少。您可以将示例中的方法与id / classs一起使用,或者序列化整个表单并将其传递。 (thx @harry)