You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP+AJAX+JavaScript传递data-id1和data-id2到模态框异常排查

问题:模态框无法传递data-id2参数导致表格为空

我需要将data-id1和data-id2两个ID值传递至模态框,但尝试后仅data-id1可成功传递,data-id2无法传递,导致模态框弹出后显示空表格。

视图情况

  • 触发模态框前:页面包含带有输入框的可点击链接元素,点击该链接可触发模态框
  • 模态框弹出后:模态框内显示空表格

相关代码

HTML代码

<a class="openModal" data-id1="<?php echo htmlentities($result->requestitem_item); ?>" data-id2="<?php echo htmlentities($result->request_NUMBER); ?>" data-toggle="modal" href="#myModal">
    <input style="font-size:25px" type="text" name="itemserialno[]" value="" required>
</a>

JavaScript脚本

<script>
  $('.openModal').click(function(){
      var id1 = $(this).attr('data-id1');
      var id2 = $(this).attr('data-id2');
      $.ajax({url:"modalajax.php?id1=&id2="+(id1&id2),cache:false,success:function(result){
          $(".modal-content").html(result);
      }});
  });
</script>

<div id="myModal" class="modal fade" role="dialog">
  <div class="modal-dialog" style="width:50%">
    <div class="modal-content">

    </div>
  </div>
</div>

模态框PHP处理代码

$ID=$_GET['id1']??'';
$ID1=$_GET['id2']??'';

$sql = "SELECT * from  itemTABLE where (itemTABLE_item ='$ID1' and itemTABLE_requestNUMBER ='$ID2') and itemTABLE_acceptance != 'Reject' " ;

错误分析及修复方案

  1. JavaScript URL拼接错误
    原代码中使用(id1&id2)是位运算操作,并非字符串拼接,导致id2没有正确传递到URL中。应改为正确的字符串拼接方式:

    $.ajax({url:"modalajax.php?id1=" + id1 + "&id2=" + id2, cache:false, success:function(result){
        $(".modal-content").html(result);
    }});
    
  2. PHP变量名混淆错误
    原代码中$ID2未定义却在SQL中使用,同时变量对应关系混乱:

    • $ID接收id1但未在SQL中使用
    • $ID1接收id2,但SQL中错误对应了字段
      修复后的PHP代码示例(同时优化SQL注入防护):
    // 明确变量名,避免混淆
    $itemId = $_GET['id1'] ?? '';
    $requestNumber = $_GET['id2'] ?? '';
    
    // 使用参数化查询防止SQL注入,修正字段与变量的对应关系
    $sql = "SELECT * FROM itemTABLE WHERE itemTABLE_item = ? AND itemTABLE_requestNUMBER = ? AND itemTABLE_acceptance != 'Reject'";
    $stmt = $pdo->prepare($sql);
    $stmt->execute([$itemId, $requestNumber]);
    $results = $stmt->fetchAll();
    
  3. 额外优化:使用data()方法获取属性
    jQuery中推荐用data()方法获取data-*属性,比attr()更规范:

    var id1 = $(this).data('id1');
    var id2 = $(this).data('id2');
    

内容的提问来源于stack exchange,提问作者ICTM

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 21:45:43