Javascript 响应ajax方法的innerHtml
我正在使用ajax将数据发送到Javascript 响应ajax方法的innerHtml,javascript,php,html,Javascript,Php,Html,我正在使用ajax将数据发送到PHP脚本,并在数据库中设置查询。我的代码: HTML脚本: <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 ?&
PHP
脚本,并在数据库中设置查询。我的代码:
HTML脚本:
<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>
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
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;
btn.innerHTML=“处于活动状态”;
您想再次单击“到”按钮。。。点击事件在哪里??通常它第一次执行是因为php首先运行(在js之前),它会回显结果,但从您的代码中,我看不到调用要执行的php的单击事件,因此基本上您缺少对第一部分的调用:@Sigma我想它是关于update\u online(1,obj.id,obj.span\u id)
。当innerHTML替换新按钮时,obj
元素不会从上一次单击更改为json回调。请尝试从内部使用update_online函数参数来获取新值。@Sigma请检查底部的答案。谢谢您的帮助。它工作得很好,但有问题。它取代了onclick=“在线更新(0,4,btn\u span\u 4)”
。我如何替换为onclick=“update\u online(0,4,'btn\u span\u 4')”
(为btn\u span\u 4设置“”)类似这样的内容:btn.innerHTML=
btn.innerHTML = "<button onclick='update_online(0," + obj.id + "," + obj.span_id + ")' class='btn-custom-delete btn btn-status'>is active</button>";