我有一个脚本将我的jquery和ajax中的按钮从“批准”更改为“批准”,但是问题是如果我单击第一行,另一行也将更改为“批准”。
这是我的按钮,
driver = webdriver.Chrome()
driver.maximize_window()
url = "https://www.gazzetta.it/"
driver.get(url)
all_elems = driver.find_elements_by_xpath("//*")
start = datetime.now()
print("Start: {}".format(start))
visible_elems = []
for elem in all_elems:
if elem.is_displayed():
visible_elems.append(elem)
end = datetime.now()
print("End: {}".format(end))
diff = end - start
print("Diff = {}".format(diff))
这是我的jquery和ajax脚本:
{
"code":-1,
"messages":[
"BasicServiceCallResponseWithData [data=true,
BasicServiceCallResponse [succeeded=false, errors=[
ServiceError [errorCode=user.already.exists, msgKey=user.already.exists, th=null]]]]"
]
}
此外,如果我刷新页面,则按钮会重置为“批准”。
截屏:单击第一行按钮时的结果:
请帮助?谢谢。
答案 0 :(得分:0)
首先,不要将$(document).ready()
放在另一个函数中。当已加载DOM(文档对象模型)时,发生ready事件。因为此事件在文档准备好之后发生,所以是拥有所有其他jQuery事件和函数的好地方。 document-ready doc
接下来,您需要优化选择器,使其仅针对当前HTML元素,而不是.approve_button
类的所有成员。如果没有内联onclick
属性,这样做会更容易。然后,您可以使用数据属性从按钮传递IDUser值。
HTML:
<td><button type="button" class="btn indigo approve_button"
data-iduser="<?php echo $row['ID_users']; ?>">Approve</button></td>
JS:
$(document).ready(function () {
$(".approve_button").click(function () {
var btn = $(this),
IDuser = $(this).data('iduser');
console.log(IDuser);
$.ajax({
url: "../Queries/approve_user.php",
type: "POST",
data: {"IDuser": IDuser},
success: function (yey) {
btn.text("Approved");
console.log(yey);
alert(yey);
}
});
});
});