使用jquery和ajax更改为文本

时间:2018-10-16 16:23:08

标签: jquery html ajax post

我有一个脚本将我的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]]]]"
    ]
}

此外,如果我刷新页面,则按钮会重置为“批准”。

截屏:单击第一行按钮时的结果:

if 1st row button click

请帮助?谢谢。

1 个答案:

答案 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);
            }
        });
    });
});