javascript - PHP、AJAX 和服务器客户端的挫败感

标签 javascript php jquery ajax

我有一个从 php.ini 生成的表。我这样做的方式可能不是最有效的方式,因为我自己编写了所有内容并且我不是专家。

当用户将零件号粘贴到上一页的搜索框中时,一切就开始了,然后将其发送到变量 lines 下的 return.php .

return.php

$c = $_POST['c'];
if (!$_SESSION['lines']) {
  $_SESSION['lines'] = $_POST['lines'];
}
$partNumber = array(); //define $partNumber as array

$x = -1;
$supplierQuery      = "SELECT distinct supplier, quotePartNumber FROM allparts WHERE quotePartNumber = '$q'" ;
$supplierResult     = mysqli_query($con, $supplierQuery);

foreach ($_SESSION['lines'] as $q) {
 $x = $x + 1; // each time we loop through this, x++

   while ($row = mysqli_fetch_array($supplierResult)) {
     $partNumber[]   = $row['quotePartNumber'];
     $customerQuery  = "SELECT DISTINCT quoteCustomer FROM $supplier where quotePartNumber = '$q'";

    if (!$c) { // $c becomes set once a user types in an end customer - without that, we want ALL generic info to be returned.
        $costQuery      = "SELECT * FROM $supplier where quotePartNumber = '$partNumber[$x]' ORDER BY quoteCost ASC LIMIT 1" ;
      } else {            
        $costQuery      = "SELECT * FROM $supplier where quotePartNumber = '$partNumber[$x]' and quoteCustomer = '$c' ORDER BY quoteCost ASC LIMIT 1" ;
       }
       $getCustomer      = mysqli_query($con, $customerQuery);
    }

稍后在我的 table 上,我有这个:

<td><?= $partNumber[$x] ?></td>
<td><?= $cost ?></td>
<td>
  <select class="btn btn-danger" onChange="selectCustomerCMR(this.value)">
  <option value="" disabled selected><?php if($c) { print $c; } else { print "Select Purchasing Customer";} ?></option>                  

  <?php                              
  while ($row = mysqli_fetch_array($getCustomer)) {                                 

  $customerName = $row['quoteCustomer'];          
  ?>
    <option><?= $customerName ?></option>                        

  <?php
  }
  ?>          
  </select>    
</td>

对下拉列表的任何更改都会启动此脚本:

<script>
function selectCustomerCMR(str) {
var id = str;

$.ajax({
      type: 'POST',
      url: 'return.php',
      data: {'c':id,'lines':lines},        
        success:function(data){
        $("#info").html(data);
        }
  });        
}
</script>

我正在尝试做什么

假设我生成的表有 3 行,其中包含零件编号 enter image description here

有一个下拉菜单允许用户选择特定客户。当用户单击此按钮时,脚本会获取该值并使用 AJAX 将其发送回同一页面 (return.php),然后使用 $c = $_POST['c']; 获取该值。代码。

我的问题

当 return.php 加载“第二次”时,其值为 $c ,我不知道如何才能更改用户选择的行。现在,每当我从一行的下拉列表中选择一个客户时,return.php 都会重新加载,并将该客户分配到第一行,忽略所有其他行。

我专门创建了$partNumber作为数组并使用 $x所以我可以每次 foreach 时增加 x 的值循环迭代。这有效,因此上表中的三行中,第一行是 $partNumber[0]第二个是$partNumber[1]等等... 但是我不知道如何将该信息放入 javascript 函数中并在重新加载时将其发送回页面,以便我可以在条件满足时将 SQL 查询更改为 ONLY 操作就在那条线...

感谢您的阅读,并感谢您的帮助!

最佳答案

考虑更改您的 <select>代码如下:

<select class="btn btn-danger" data-x="<?= $x ?>" onChange="selectCustomerCMR(this)">

然后,您的 Ajax 代码可以更改为:

function selectCustomerCMR(select) {
    var id = select.value, x = select.getAttribute("data-x");

    $.ajax({
        type: 'POST',
        url: 'return.php',
        data: { c: id, lines: lines, x: x },        
        success: function(data){
            // Update!
        }
    });        
}

这样,你的 PHP 就可以获得 cx .

关于javascript - PHP、AJAX 和服务器客户端的挫败感,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28305485/

相关文章:

javascript - 结合更改和 keyup

Javascript,在 url 帖子之间丢失 console.log

php - 如何通过 PHP 将 3 张图像合并为 1 张图像?

Javascript 从单击的按钮写入文本区域

php - 循环期间数据不会进入数据库

php - 如何将 LDAP 时间戳转换为 Unix 时间戳

jquery - Bootstrap Navbar 中的菜单项未清除 Logo

javascript - 使用 Object.create() 将函数与原型(prototype)上的属性合并

javascript - 图像与彩色背景 block 之间的颜色过渡区域

javascript - 单击按钮时,我想使用 JavaScript 将文本字段的值设置为零