如何在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
相关产品推荐
相关产品推荐

