gpt4 book ai didi

javascript - php 循环中的 JQuery Post 工作并不完美

转载 作者:行者123 更新时间:2023-11-28 04:17:05 24 4
gpt4 key购买 nike

我有以下list.php,它创建一个包含项目的列表和一个按钮(Erledigt!),该按钮将Jquery Post发送到wishdelete2.php。问题是 JQuery 帖子工作并不完美:有一次我需要按按钮 3 次或 5 次,然后 Jquery 才会被处理。但我希望我只需要 1x 并且 Jquery post 已被处理。我必须改变什么?

列表.php:

<html lang="de">
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta charset="utf-8">
<title>Wünsche</title>
<!-- <script src="../jquery.min.js"></script> -->
<script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script>

<style>
table{
width:100%;
border-collapse:collapse;
}
table th{
padding:5px;
border:#5f5f5f 1px solid;

}
table td{
padding:5px;
border:#5f5f5f 1px solid;
}
table tr{
background: #bbbbbb;
}
table tr:nth-child(4n){
background: #e3e3e3;
}
</style>

</head>
<div id="resulter"></div>
<body>
<h3>Wünsche</h3>
<table>
<tr><th>Zeit</th><th>IMDB-ID</th><th></th><th></th><th>Counter</th><th>Titel</th><th>Art</th></tr>
<?php
$pdo = new PDO('mysql:host=********;dbname=********;charset=utf8', '********', '********');
$sql = "SELECT * FROM ******** WHERE not marker = 'oU' ORDER BY cast(counter as int) DESC, timestamp ";
foreach($pdo->query($sql) as $row) {
$id = $row['id'];
$timestamp = $row['timestamp'];
$counter = $row['counter'];
$art = $row['art'];
$imdbid = $row['imdb_id'];

$title = $row['title'];
$language = $row['language'];
$aufloesung = $row['aufloesung'];
$marker = $row['marker'];
?>
<tr><td><?php echo $timestamp ?></td><td><?php echo $imdbid ?></td><td><?php echo $language ?></td>
<td><?php echo $aufloesung ?></td><td class="counter"><?php echo $counter ?></td><td class="title" style=""><?php echo $title ?></td><td><?php echo $art ?></td><td><?php echo $marker ?></td>
<td style="padding:0;"><button class="<?php echo $id ?>">Erledigt!</button>
<select class="marker<?php echo $id ?>"><option></option><option>oD</option><option>oDwE</option><option>wE</option><option>oE</option><option>oU</option></select></td></tr>
<script>
$(document).ready(function(){
$(".<?php echo $id ?>").click(function(){
var id = "<?php echo $id ?>",
marker = $(".marker<?php echo $id ?>").val();
$.post("wishdelete2.php",
{ id: id,
marker: marker
});
location.reload();
});
});
</script>
<?php } ?>
</table>

</body>
</html>

和wishdelete2.php:

<?php
$con=mysqli_connect("********","********","********","********");
$id = mysqli_real_escape_string($con, $_POST['id']);
$marker = mysqli_real_escape_string($con, $_POST['marker']);
mysqli_close($con);

$pdo = new PDO('mysql:host=********;dbname=********;charset=utf8', '********', '********');
if(empty($marker)){
$stmt = $pdo->query("DELETE FROM ******** WHERE id='$id' ");
}else{
$stmt = $pdo->query("UPDATE ******** SET marker='$marker', IP='' WHERE id='$id' ");
}
?>

最佳答案

jQuery.post 是一个异步函数,即一旦该函数返回,请求将不会被发送。问题是您在调用 post 之后立即调用 location.reload(),因此在大多数情况下,在浏览器重新加载页面之前,您的请求不会发送。如果您想在发送 post 请求后重新加载页面,请将处理程序传递给 post,例如到成功事件。

the documentation of jQuery.post 中所述,您可以简单地在数据后面传递一个函数,如下所示:

$.post(
"wishdelete2.php",
{id: id, marker: marker},
function () { location.reload(); }
);

请注意,此处理程序是一个成功处理程序,因此只有在 post 请求成功时才会被调用。您可能需要查看链接的文档并提供错误处理程序以在必要时通知用户失败。

此外,您应该考虑添加一些指示,表明页​​面正在等待发布请求。您可以通过 Google 搜索加载微调器来查找常用的动画图形,表明有一个脚本正在后台加载某些内容。当然,显示这样的旋转器只是表明这一点的一种方式。要有创意。

关于javascript - php 循环中的 JQuery Post 工作并不完美,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45742289/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com