【问题标题】:Ajax pass prompt input to phpAjax 将提示输入传递给 php
【发布时间】:2018-06-11 09:56:47
【问题描述】:

一个表单是用 PHP 循环动态创建的,并从 DB 中显示一行。我要求用户在更改数量时通过提示输入,但是当我使用 AJAX 将其发送到 PHP 时,它是空的。我猜这是因为隐藏输入“new_message”在 AJAX 向 PHP 脚本发送值的同时被填充,所以此时是空白的。对于生成的第一行,我会收到一条消息,但对于任何其他行都没有。

你能帮我如何将提示输入传递给 PHP 脚本吗?

//Update qty on article    
$('.update_qty').on('change', function() {

  var message = prompt("Upišite razlog za izmjenu količine:");
  //e.preventDefault();

  //Get message value
  $('#new_message').val(message);

  var data = $('#form1').serializeArray();

  if (message != "" || message != NULL) {
    $.ajax({
      type: 'POST',
      url: 'update_qty.php',
      data: data,
      success: function(data) {
        alert(data);
      }
    });
  } else {
    alert("Empty");
    e.PreventDefault();
    return false;
  }
});
<tbody>
<?php if (!empty($sales_plan_list)) {
      foreach($sales_plan_list as $sales_key => $sales_value) {
 ?>
<tr class="new">
   <td>
   <a href="view_product_sales.php?id=<?php echo $sales_value['article_id']; ?>">
   <?php echo $sales_value['article_no']; ?>
   </a>
   </td>
   <td><?php echo $sales_value['description']; ?></td>
   <td><?php echo myNumberFormat($sales_value['rrp']); ?></td>
   <td>
   <form name="form1" id="form1" method="POST" action="update_qty.php">
   <input type="text" name="update_qty" class="update_qty" id="qty" value="<?php echo $sales_value['qty'] ?>"><?php echo ' Kom'; ?>
   <input type="hidden" name="article_id" id="article_id" value="<?php echo $sales_value['article_id']; ?>">
   <input type="hidden" name="sales_plan_id" id="sales_plan_id" value="<?php echo $sales_plan_id; ?>">
   <input type="hidden" name="product_mix_id" id="product_mix_id" value="<?php echo $product_mix_id; ?>">
   <input type="hidden" name="new_message" id="new_message" value="">
   </form>
   </td>
   <td>
   <a href="view_product_sales.php?id=<?php echo $sales_value['article_id']; ?>" class="ti-eye" title="Pogledaj"></a> &nbsp;&nbsp;
   <a href="edit_product_sales.php?id=<?php echo $sales_value['article_id']; ?>" class="ti-settings" title="Izmjeni"></a> &nbsp;&nbsp;
   <a href="delete_product_sales.php?id=<?php echo $sales_value['article_id']; ?>$sales_plan_id=<?php echo $sales_plan_id; ?>" class="ti-trash" title="Obriši"></a>
  </td>
   </tr>
   <?php
   }
   }
   ?>                                                                    
   </tbody>

【问题讨论】:

  • 好吧,序列化表单数据之后你填写了字段然后......?
  • 就像上面的代码(我编辑的)?那也行不通。只能获取第一行的消息。
  • 你首先说的是什么“行”?您谈论了一个循环,但忽略了向我们展示所说的循环 - 所以我们无法知道您生成的内容会是什么样子。但是 ID 在 HTML 文档中必须是唯一的,因此,如果您的循环多次输出上面显示的内容,那一开始就是错误的,这是您需要修复的第一件事。
  • 在php中打印数据并检查是否有值。如果不是在发送 ajax 打印 $('#new_message').val 之前。 $('#new_message') 的名称是什么,如果没有,则添加一个,然后在 php 中检查是否有值。请记住,ajax 按名称发送表单数据。
  • 我已经用 php 循环更新了我的代码,所以你可以看到行是如何生成的。

标签: php jquery ajax prompt


【解决方案1】:

问题是您有多个具有相同id 的元素。你不应该那样做。您检查 jQuery 中的值,然后发送不同的表单数据。

这一切都只是在查询,我无法检查它。但请尝试将 id 更改为 class 并确保发送正确的表单数据。

例如改变这个

<form name="form1" id="form1" method="POST" action="update_qty.php">

到这里

<form name="form1" id="form<?= $sales_key; ?>" method="POST" action="update_qty.php">

【讨论】:

  • 好的,我明白了。我添加了 class="message" 现在正在工作。唯一我想不通的是为什么我在数据库中得到双重输入? jqueryonchange 事件有什么问题吗?
  • 这里有很多可能性。如果无法重现问题,我无法为您提供更多帮助,如果是 php,这实际上是不可能的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-01-20
  • 1970-01-01
  • 2014-10-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-23
相关资源
最近更新 更多