Php 在AJAX上更新div提交jQuery正在更新所有div
我正试图用一篇ajax文章更新一个div。问题是…它正在更新每个分区 下面是json.php:Php 在AJAX上更新div提交jQuery正在更新所有div,php,jquery,ajax,Php,Jquery,Ajax,我正试图用一篇ajax文章更新一个div。问题是…它正在更新每个分区 下面是json.php: //json.php $data['months'] = $db->escape_value($_POST['check']); $data['id'] = $db->escape_value($_POST['hidden']); $query = "UPDATE month SET months = '{$data['months']}' WHERE monthID = '{$da
//json.php
$data['months'] = $db->escape_value($_POST['check']);
$data['id'] = $db->escape_value($_POST['hidden']);
$query = "UPDATE month SET months = '{$data['months']}' WHERE monthID = '{$data['id']}'";
$result = $db->query($query);
if($result) {
$data['success'] = true;
$data['message'] = "Update Successful!";
$data['text'] = $_POST['check'];
echo json_encode($data);
} else {
$data['message'] = "Update could not be completed.";
}
以及html:
<?php
$query = $db->query('SELECT * FROM month');
?>
<html>
<head>
<title>jQuery/Ajax - Update is updating all divs</title>
<link rel="stylesheet" type="text/css" href="test.css" />
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$("input.check, button.save, input.cancel, div.message").hide();
$(".edit").click(function(){
$(this).parent().siblings("li.liTwo").children("input.delete").hide();
$(this).parent().siblings("li.liThree").children("button.save").show();
$(this).parent().siblings("li.liFour").children("input.cancel").show();
$(this).parents("ul").siblings("div.showText").hide();
$(this).parents("ul").siblings("input.check").show();
$(this).hide();
return false;
});
$(".cancel").click(function(){
$(this).parent().siblings("li.liTwo").children("input.delete").show();
$(this).parent().siblings("li.liThree").children("button.save").hide();
$(this).parent().siblings("li.liOne").children("input.edit").show();
$(this).parents("ul").siblings("div.showText").show();
$(this).parents("ul").siblings("input.check").hide();
$(this).hide();
return false;
});
$("form[name=form1]").submit(function(){
var params = $(this);
$.post("json.php", { hidden : $(this).find("[name=hidden]").val(), check : $(this).find("[name=check]").val() },
function (data){
if(data.success) {
$(".showText").html(data.text);
$(".message").html(data.message).slideDown("fast");
$(".check").hide();
$("button.save").hide();
$(".cancel").hide();
$(".edit").show();
$(".delete").show();
$(".showText").show();
return false;
}
}, "json");
return false;
});
});
</script>
</head>
<body>
<div class="message">message</div>
<?php while($row = $db->fetch_assoc($query)) { ?>
<form action="json.php" name="form1" method="post">
<div class="container">
<div class="showText"><?php echo $row['months']; ?></div>
<input name="check" type="text" class="check" value="<?php echo $row['months']; ?>" />
<input name="hidden" type="hidden" class="hidden" value="<?php echo $row['monthID']; ?>" />
<ul class="list">
<li class="liOne">
<input name="edit" type="button" class="edit" value="edit" />
</li>
<li class="liTwo">
<input name="delete" type="submit" class="delete" value="delete" />
</li>
<li class="liThree">
<button name="save" type="submit" class="save" value="<?php echo $row['monthID']; ?>">save</button>
</li>
<li class="liFour">
<input name="cancel" type="button" class="cancel" value="cancel" />
</li>
</ul>
</div>
</form>
<?php } ?>
<!--<a id="reset" href="test3.php">reset</a>-->
</body>
</html>
jQuery/Ajax-Update正在更新所有div
$(文档).ready(函数(){
$(“input.check,button.save,input.cancel,div.message”).hide();
$(“.edit”)。单击(函数(){
$(this.parent().sides(“li.liTwo”).children(“input.delete”).hide();
$(this.parent().sides(“li.liThree”).children(“button.save”).show();
$(this.parent().sides(“li.liFour”).children(“input.cancel”).show();
$(this).parents(“ul”).sides(“div.showText”).hide();
$(this).parents(“ul”).sides(“input.check”).show();
$(this.hide();
返回false;
});
$(“.cancel”)。单击(函数(){
$(this.parent().sides(“li.liTwo”).children(“input.delete”).show();
$(this.parent().sides(“li.liThree”).children(“button.save”).hide();
$(this).parent().sides(“li.liOne”).children(“input.edit”).show();
$(this).parents(“ul”).sides(“div.showText”).show();
$(this.parents(“ul”).sides(“input.check”).hide();
$(this.hide();
返回false;
});
$(“form[name=form1]”)。提交(函数(){
var params=$(此参数);
$.post(“json.php”,{hidden:$(this).find(“[name=hidden]”)val(),check:$(this.find(“[name=check]”)val(),”,
功能(数据){
if(data.success){
$(“.showText”).html(data.text);
$(“.message”).html(data.message).slideDown(“fast”);
$(“.check”).hide();
$(“button.save”).hide();
$(“.cancel”).hide();
$(“.edit”).show();
$(“.delete”).show();
$(“.showText”).show();
返回false;
}
}“json”);
返回false;
});
});
消息
每个div都有相同的类:showText。它们需要唯一的ID,比如Div1、Div2。然后通过ID更新它们:$(“#Div1”)每个div都有相同的类:showText。它们需要唯一的ID,比如Div1、Div2。然后通过ID:$(“#Div1”)更新它们。提示,而不是回答:
$(“.showText”)返回多少个元素
第二个提示:不止一个
===
为更清晰起见,请编辑:
第一个问题是您正在按类进行选择,如.showText。但是您正在创建多个表单,每个表单都有一个匹配.showText的元素。您需要某种方法来指向每个表单中的正确元素。解决此问题的一种方法是在每个表单标记上添加一个ID,这样您就可以选择$(“#表单编号-$N.showtext)--这将选择ID为“#表单编号-$N”的元素中class=“showtext”的任何元素
您正在数据库中的行上循环并编写表单。因此,您需要一些变量数据来标识每个单独的表单
您有一个填充$row的while循环:
<?php while($row = $db->fetch_assoc($query)) { ?>
。。。
返回false;
}
}“json”);
返回false;
});
你看到那里发生了什么吗?提示,而不是回答:
$(“.showText”)返回多少个元素
第二个提示:不止一个
===
为更清晰起见,请编辑:
第一个问题是您正在按类进行选择,如.showText。但是您正在创建多个表单,每个表单都有一个匹配.showText的元素。您需要某种方法来指向每个表单中的正确元素。解决此问题的一种方法是在每个表单标记上添加一个ID,这样您就可以选择$(“#表单编号-$N.showtext)--这将选择ID为“#表单编号-$N”的元素中class=“showtext”的任何元素
您正在数据库中的行上循环并编写表单。因此,您需要一些变量数据来标识每个单独的表单
您有一个填充$row的while循环:
<?php while($row = $db->fetch_assoc($query)) { ?>
。。。
返回false;
}
}“json”);
返回false;
});
您看到那里发生了什么吗?您需要为正在更改的元素指定上下文(表单):
$("form[name=form1]").submit(function(){
var form = this;
var params = $(this);
$.post(form.action, { hidden : $(this).find("[name=hidden]").val(), check : $(this).find("[name=check]").val() },
function (data){
if(data.success) {
$(".showText", form).html(data.text);
$(".message", form).html(data.message).slideDown("fast");
$(".check", form).hide();
$("button.save", form).hide();
$(".cancel", form).hide();
$(".edit", form).show();
$(".delete", form).show();
$(".showText", form).show();
return false;
}
}, "json");
return false;
});
此外,如果隐藏父元素,子元素也会隐藏,因此您可能需要这样做…您需要为正在更改的元素指定上下文(表单):
$("form[name=form1]").submit(function(){
var form = this;
var params = $(this);
$.post(form.action, { hidden : $(this).find("[name=hidden]").val(), check : $(this).find("[name=check]").val() },
function (data){
if(data.success) {
$(".showText", form).html(data.text);
$(".message", form).html(data.message).slideDown("fast");
$(".check", form).hide();
$("button.save", form).hide();
$(".cancel", form).hide();
$(".edit", form).show();
$(".delete", form).show();
$(".showText", form).show();
return false;
}
}, "json");
return false;
});
此外,如果隐藏父元素,子元素也会隐藏,因此您可能希望这样做…我正在从数据库中提取值…因此ID对我不起作用。数据库如何将它们分开?更新数据库时,WHERE子句使用什么?数据库中没有唯一的标识符吗?是的..有一个隐藏字段在post上传递ID。更新不是问题…我只是无法在它各自的div上显示新值…更正:它确实显示,只是在每个div上显示。我已经为此挣扎了几个小时。好的,重新构造生成的HTML。为每个元素添加一个id属性,并使其与您正在谈论的隐藏id相同。然后,当您设置值时,请使用$(“#yourhidenid”)来选择元素,而不是$(“.showText”),我正在从数据库中提取值…因此ID对我不起作用。数据库如何将它们分开?更新数据库时,WHERE子句使用的是什么?数据库中没有唯一的标识符吗?是的..有一个隐藏字段在post上传递ID。更新不是问题…我只是无法在它各自的div上显示新值…更正:它确实显示,只是在每个div上显示。我已经为此挣扎了几个小时。好的,重新构造生成的HTML。为每个元素添加一个id属性,并使其与您正在谈论的隐藏id相同。然后,当你设置值时,使用$(“#yourhidenid”)来选择元素,而不是$(“.showText”)哎呀……为什么这些论坛必须如此屈尊?不是屈尊。。。我以为你会很快看到的。编辑以获得更清晰的信息。
$("form[name=form1]").submit(function(){
var form = this;
var params = $(this);
$.post(form.action, { hidden : $(this).find("[name=hidden]").val(), check : $(this).find("[name=check]").val() },
function (data){
if(data.success) {
$(".showText", form).html(data.text);
$(".message", form).html(data.message).slideDown("fast");
$(".check", form).hide();
$("button.save", form).hide();
$(".cancel", form).hide();
$(".edit", form).show();
$(".delete", form).show();
$(".showText", form).show();
return false;
}
}, "json");
return false;
});