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

AJAX POST请求异常:未检测到$_POST变量求助

嘿,我一眼就瞅到问题所在了,咱们一步步来修复:

1. PHP判断逻辑的致命错误

你在PHP代码里写了isset($_POST['name'])来做参数校验,但你的AJAX请求里根本没传name这个参数啊!你实际传递的是oggetto、html和pubblicato,这就导致if条件永远不成立,直接走到else分支输出"Errore"。

2. AJAX参数传递的小坑

你现在用字符串拼接data的时候写了&,这是HTML转义后的字符,在JS里应该直接用&;另外更推荐用对象形式传递参数,jQuery会自动帮你处理编码,避免特殊字符(比如textarea里的换行、特殊符号)导致参数丢失或乱码。

3. 额外的优化建议

  • addslashes现在已经不是防SQL注入的推荐方案了,如果你用PDO或mysqli,直接用预处理语句绑定参数更安全。
  • 你的函数参数pubblicato被写死成了0,如果要传递函数接收的真实值,记得改成对应变量。

修改后的代码示例

JavaScript代码

function pubblica(pubblicato){ 
    var htmlpuro = document.getElementById("htmlpuro").value; 
    var oggetto = document.getElementById("oggetto").value; 
    $.ajax({ 
        type: "POST", 
        url: "salva_doc_ajax.php", 
        // 用对象形式传参,更清晰且自动处理编码
        data: {
            oggetto: oggetto,
            html: htmlpuro,
            pubblicato: pubblicato // 这里改成函数接收的参数,而不是写死的0
        }, 
        dataType: "html", 
        success: function(msg) { 
            alert(msg); 
        }, 
        error: function() { 
            alert("Chiamata fallita, si prega di riprovare..."); 
        } 
    }); 
}

PHP代码

<?php 
// 修正判断条件,检查实际传递的参数
if(isset($_POST['oggetto']) && isset($_POST['html']) && isset($_POST['pubblicato'])){ 
    $oggetto = $_POST['oggetto']; 
    $html = $_POST['html']; 
    $pubblicato = $_POST['pubblicato']; 
    // 如果是要存储到数据库,更推荐用预处理语句替代addslashes
    $oggetto = htmlentities($oggetto); 
    $html = htmlentities($html); 
    echo "Oggetto: $oggetto"; 
    echo "<br>HTML: $html"; 
    echo "<br>Pubblicato: $pubblicato"; 
}else{ 
    echo "Errore: Parametri richiesti mancanti"; 
} 
?>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:35:30