Pardis Ak
Pardis Ak

Reputation: 73

innerHtml on responding ajax method

I am using ajax for sending data to PHP script and set a query in my database. my codes :

HTML script :

<span id="btn_span_<?php echo $user_id ?>">
      <?php if ($online == 1) { ?>
      <button onclick="update_online(1,<?php echo $user_id; ?>,'btn_span_<?php echo $user_id ?>')" class="btn-custom-delete btn btn-status">is active</button>
      <?php } elseif ($online == 0) { ?>
      <button onclick="update_online(0,<?php echo $user_id; ?>,'btn_span_<?php echo $user_id ?>')" class="btn-custom-services btn btn-status">active
      </button>
      <?php } ?>
 </span>

JAVASCRIPT script :

function update_online(status, id, span_id) {
var settings = {
     "async": true,
     "crossDomain": true,
     "url": "script_edit_status.php?status=" + status + '&id=' + id + '&span_id=' + span_id,
     "method": "GET"
};

$.ajax(settings).done(function (response) {
      var obj = JSON.parse(response);
      var btn = document.getElementById(span_id);
      if (obj.status == "1") {
            btn.innerHTML = "<button onclick='update_online(1,obj.id,obj.span_id)' class='btn-custom-services btn btn-status'>active</button>";
      } else if (obj.status == "0") {
                btn.innerHTML = "<button onclick='update_online(0,obj.id,obj.span_id)' class='btn-custom-delete btn btn-status'>is active</button>";
      }
});
}

PHP script :

<?php
include_once "../db/connection.php";
$id = $_GET['id'];
$status = $_GET['status'];
$span_id = $_GET['span_id'];
try {
    if ($status == 1) {
        $sql_edit_status = "update api_user set online=0 where id='$id';";
    } elseif ($status == 0) {
        $sql_edit_status = "update api_user set online=1 where id='$id';";
    }
    $conn->query($sql_edit_status);


    $status_arr = array(
        "id" => $id,
        "status" => $status,
        "span_id" => $span_id
    );

    echo json_encode($status_arr);

} catch (PDOException $e) {
    echo "Error: " . $e->getMessage();
}
$conn = null;

it is ok for the first action but when I want to click to button for second time consol shows following error :

Uncaught ReferenceError: obj is not defined

The error is for innerHTML that don't send correctly methods...
Can you help me?

Upvotes: 3

Views: 257

Answers (1)

btn.innerHTML = "<button onclick='update_online(0," + obj.id + "," + obj.span_id + ")' class='btn-custom-delete btn btn-status'>is active</button>";

Upvotes: 1

Related Questions