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

