Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在AJAX上更新div提交jQuery正在更新所有div_Php_Jquery_Ajax - Fatal编程技术网

Php 在AJAX上更新div提交jQuery正在更新所有div

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

我正试图用一篇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 = '{$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;
  });