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

文本框含&amp时jQuery提交空值至数据库的问题

问题原因及解决方案

问题根源

  1. 数据未编码导致参数截断:手动拼接POST数据字符串时,未对&这类特殊字符做URL编码,当输入内容包含&amp时,服务器会把&识别为参数分隔符,导致msadhgstsmanu的实际值被截断为空。
  2. AJAX配置错误:错误设置processData: false和contentType: false,这两个参数仅适用于上传文件的FormData场景,普通POST请求下会让jQuery无法正确处理数据编码和请求头,服务器无法解析POST参数。

修复步骤

1. 修改index.php的AJAX代码

推荐用对象形式传递数据,jQuery会自动完成URL编码,无需手动拼接字符串:

$(document).ready(function (e) {
    $(document).on('click', '.msptd_584', function(d){
        var maneno = $('#hiitest').val();
        
        $.ajax ({
            url: 'test.php',
            data: { msadhgstsmanu: maneno }, // 对象形式传递,自动编码特殊字符
            type: 'POST',
            success: function(data){
                console.log(data); // 可查看服务器返回的接收结果
            }
        });
    });
});

如果坚持手动拼接字符串,必须对内容做URL编码:

var maneno = $('#hiitest').val();
var posted = 'msadhgstsmanu='+ encodeURIComponent(maneno); // 编码特殊字符避免参数截断

$.ajax ({
    url: 'test.php',
    data: posted,
    type: 'POST',
    // 移除processData和contentType的错误配置
    success: function(data){
        console.log(data);
    }
});

2. 验证test.php的接收逻辑

在test.php中添加输出代码,确认数据是否正确接收:

<?php
// ... 数据库连接代码 ...

$bodyfirst = (array_key_exists('msadhgstsmanu', $_POST) ? $_POST['msadhgstsmanu'] : "");
echo $bodyfirst; // 添加此行,在AJAX的success回调中查看返回值

$email2 = 'my name';
$stmt = $dbcon->prepare("INSERT INTO test (jina,mwisho)VALUES(:nani2e,:comm_body21)");
$stmt->execute(['nani2e'=>$bodyfirst,'comm_body21'=>$email2]);

修改后,包含&amp;amp的内容就能正常提交到服务器并插入数据库。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 19:35:22