【问题标题】:Get data from php-foreach-loop to ajax从 php-foreach-loop 获取数据到 ajax
【发布时间】:2015-01-07 19:18:21
【问题描述】:

我已经为这个问题寻找了很长时间的解决方案,但找不到任何解决方案。

我从数据库中获取数据以在我的网站上显示一些项目。对于每个项目,我可以单击笔符号来编辑项目名称。我想发送每个 ajax 请求的日期,但总是获取第一个项目的数据。例如,如果我尝试编辑第二个项目“test”的名称,我会得到第一个项目“blubb”的数据

我尝试过的: - 使用的类不是 Id´s Call Ajax function from PHP foreach with form - 用过 $this Get Ajax variable from the PHP foreach loops

我的代码看起来像这样(简化):

< script type = "text/javascript" >
  $(document).ready(function() {
    $(".submit").click(function() {

//here are the problems, i only get the value of the first project
      var new_project_name = $('.new_project_name').val(); 
      var old_project_name = $('.old_project_name').val();


      $.ajax({
        type: "POST",
        url: "php/edit/edit.php",
        data: {
          old_project_name: old_project_name,
          new_project_name: new_project_name,
          name: name
        },

      }).

      done(function(response) {
        blabla

      });
    });
  }); < /script>
<?php foreach($db->query('SELECT * FROM portfolio ORDER BY position, id desc') as $row) { $name = $row['name']; ?>

<div class="rename">
  <table width="400" border="0" cellspacing="1" cellpadding="2">
    <tr>
      <td>Projektname:</td>
    </tr>
    <tr>
      <td>
        <input type="text" class="new_project_name" value="<?php echo $name;?>">
      </td>
      <input type="text" class="old_project_name" value="<?php echo $name;?>" hidden>
    </tr>
    <tr>
      <td>
        <input class="submit" type="submit" value="Umbenennen">
      </td>
    </tr>
  </table>
</div>

<?php } ?>

感谢您的帮助。

【问题讨论】:

  • $('.new_project_name') 将返回具有new_project_name 类的所有内容的集合。我怀疑在集合上调用 #val 函数的目的是返回什么。要实现您想要的,您应该迭代集合以进行更改。
  • 可以在jquery中使用closest取对应的输入值,也可以使用id区分取对应的输入值
  • @.Siva.G :我尝试像这样使用最接近: var new_project_name = $(this).closest('.new_project_name').val();但这似乎行不通。

标签: php jquery ajax foreach


【解决方案1】:

您可以将项目的 id 传递给 ajax 并更新新值。为此,您只需要传递元素的 id。

HTML

  <input type="text" class="new_project_name" value="<?php echo $name;?>" rel="<?php echo $id; ?>">

jQuery

​​>
 $(document).ready(function() {
    $(".submit").click(function() {
      var parentObj = $(this).closest('.rename');
      var id = parentObj.find(' .new_project_name').attr('rel');
      var project_name = parentObj.find(' .new_project_name').val();


      $.ajax({
        type: "POST",
        url: "php/edit/edit.php",
        data: {
          project_name : project_name ,
          id:id
        },

      }).

      done(function(response) {
        blabla

      });
    });
  });

查看 Fiddle 并检查控制台

http://jsfiddle.net/hoja/2caukhvo/11/

【讨论】:

  • 感谢您的回答。我像你说的那样尝试过,但萤火虫告诉我,他得到了第一个项目的名称 -> project_name : blubb
  • 检查我的小提琴并接受答案,如果它对你来说是值得的
  • 非常感谢,您解决了问题。我试了好几个小时都没有成功。
猜你喜欢
  • 2023-03-17
  • 1970-01-01
  • 1970-01-01
  • 2017-04-20
  • 2013-04-10
  • 1970-01-01
  • 2012-08-26
  • 2019-11-12
  • 2013-05-17
相关资源
最近更新 更多