0
基本的には、PHP/AJAX/JavaScript/SQLを使用しています。私はすべてのユーザーのリストを表示するために、データベースに「有効」の列が1つある場合は「有効」、0の場合は「無効にする」と表示されます。各ユーザーの横にあるボタンは、最初にページを読み込むと正しく表示され、 「有効」ボタンをクリックすると、ユーザーがクリックすると有効になり、テキストは「無効」に変更されますが、クリックするとユーザーは無効になりません。クリックして実行すると変更される有効/無効ボタン
ページが最初に読み込まれたときにユーザーが「無効にする」ボタンを持っている場合は、それをクリックすると空白になり、ユーザーは無効になりません。
どこが間違っているのか分かりません。これまでのコードを含めます。 adminPage.php
if($enabled=='1'){
$allUsers.='<button id="adminButton_'.$username.'" onclick="adminHandler(\'disable\',\''.$username.'\',\'adminButton_'.$username.'\')">disable</button>';
}
else if($enabled=='0')
{
$allUsers.='<button id="adminButton_'.$username.'" onclick="adminHandler(\'enable\',\''.$username.'\',\'adminButton_'.$username.'\')">enable</button>';
}
adminPageでadminHandler機能
<script type="text/javascript">
function adminHandler(action,username,elem){
var conf = confirm("Press OK to '"+action+"' this user.");
if(conf != true){
return false;
}
_(elem).innerHTML = "processing ...";
var ajax = ajaxObj("POST", "Includes/adminProcessing.php");
ajax.onreadystatechange = function() {
if(ajaxReturn(ajax) == true) {
if(ajax.responseText == "enable_ok"){
_(elem).innerHTML = "Disable";
} else if(ajax.responseText == "disable_ok"){
_(elem).innerHTML = "Enable";
} else {
_(elem).innerHTML = ajax.responseText;
}
}
}
ajax.send("action="+action+"&username="+username);
}
adminProcessing.phpページ
if (isset($_POST['action']) && isset($_POST['username']))
{
$username = $_POST['username'];
if($_POST['action'] == "enable")
{
$sql = "UPDATE users SET enabled='1' WHERE username='$username' LIMIT 1";
$query = mysqli_query($conn, $sql);
mysqli_close($conn);
echo "enable_ok";
exit();
}
else if($_POST['action'] == "disabled"){
$sql = "UPDATE users SET enabled='0' WHERE username='$username' LIMIT 1";
$query = mysqli_query($conn, $sql);
mysqli_close($conn);
echo "disable_ok";
exit();
}
で有効/無効ボタンの
コード3210
AJAXファイル
function ajaxObj(meth, url) {
var x = new XMLHttpRequest();
x.open(meth, url, true);
x.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
return x;
}
function ajaxReturn(x) {
if (x.readyState == 4 && x.status == 200) {
return true;
}
}
問題は 'else if($ _ POST ['action'] ==" disabled "){' – Gabriel
であるかもしれません。今すぐボタンをクリックしたときにページ全体を再読み込みせずにもう一度使用できるようにする必要があります。 – badgerbadger
また、onclickコードを更新する必要があります。あるいは、データセットのようなアクションを保存するために他のメソッドを使うこともできます:ボタン上で 'data-action'属性を使い、ajax呼び出しの後でそれを更新します。もちろん、 'adminHandler'の' action'パラメータの代わりに属性を読んでください。 – Gabriel