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

如何在JavaScript确认操作后调用CAD052.php中的PHP函数?

解决思路与代码修改

首先要明确:前端JavaScript无法直接调用后端PHP函数,必须通过AJAX异步请求来触发后端逻辑。下面是具体的实现步骤:

1. 替换废弃的数据库操作代码

你当前使用的mysql_*系列函数已被PHP官方废弃,存在安全隐患(比如SQL注入),建议替换为mysqli预处理语句:

public function engenhariaDuplicada($form_tabela, $form){
    $Composicao = $form->formArray['campos']['geral']['D074_D001_Id_Composicao']['value'];
    $Principal = $form->formArray['campos']['geral']['D074_D001_Id']['value'];

    // 假设$conn是你的mysqli数据库连接实例
    $sql = "SELECT * FROM D074 WHERE D074_D001_Id_Composicao = ? AND D074_D001_Id = ?";
    $stmt = $conn->prepare($sql);
    // 绑定参数,"ss"表示两个字符串类型的参数
    $stmt->bind_param("ss", $Composicao, $Principal);
    $stmt->execute();
    $result = $stmt->get_result();

    if($result->num_rows > 0){
        // 输出带AJAX逻辑的JavaScript
        echo "<script>
            if(confirm('Este produto já existe. Deseja incluir mesmo assim?')){
                // 使用jQuery发送POST请求到CAD052.php
                $.ajax({
                    url: 'CAD052.php',
                    type: 'POST',
                    data: {
                        action: 'add_duplicate_product', // 标识要执行的后端操作
                        composicao: '{$Composicao}',
                        principal: '{$Principal}'
                        // 可添加其他需要传递的参数
                    },
                    success: function(response){
                        // 请求成功后的处理,比如提示用户或刷新页面
                        alert('Produto adicionado com sucesso!');
                        location.reload(); // 刷新页面更新数据
                    },
                    error: function(){
                        alert('Erro ao processar sua solicitação.');
                    }
                });
            }
        </script>";
        return true;
    }
    return false;
}

2. 在CAD052.php中处理AJAX请求

在CAD052.php中接收前端传递的参数,调用你的目标PHP函数:

// CAD052.php

// 示例:你的目标函数,用于添加重复产品
function adicionarProdutoDuplicado($composicao, $principal){
    global $conn; // 确保数据库连接可用
    // 这里编写添加产品的逻辑,比如插入数据库
    $sql = "INSERT INTO D074 (D074_D001_Id_Composicao, D074_D001_Id) VALUES (?, ?)";
    $stmt = $conn->prepare($sql);
    $stmt->bind_param("ss", $composicao, $principal);
    return $stmt->execute();
}

// 检查是否为AJAX请求,且携带指定的action参数
if(isset($_POST['action']) && $_POST['action'] === 'add_duplicate_product'){
    $composicao = $_POST['composicao'];
    $principal = $_POST['principal'];
    
    // 调用目标函数
    $resultado = adicionarProdutoDuplicado($composicao, $principal);
    
    // 返回响应给前端
    echo $resultado ? 'sucesso' : 'erro';
}

3. 注意事项

  • 确保页面已引入jQuery库:可以在页面头部添加<script src="jquery.min.js"></script>(建议下载本地文件,避免依赖外部CDN)
  • 数据库连接:确保$conn在两个PHP文件中都能正常访问(可以通过全局变量、单例类或配置文件引入)
  • 安全防护:始终使用预处理语句防止SQL注入,不要直接将用户输入拼接到SQL语句中
  • 回调逻辑:可以根据实际需求修改AJAX的success和error回调,比如更新页面DOM而不是刷新整个页面

内容的提问来源于stack exchange,提问作者Carlos Eduardo Carvalho

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 03:40:53