jQuery+PHP动态修改div内容后无法跨站POST提交问题求助
问题分析与解决方案
看起来你遇到的核心问题很明确:你一直在修改<div>标签的文本,但<div>不是表单控件,再加上你给它加了disabled属性(就算是表单控件,disabled元素也不会被表单提交),所以提交表单时这个值根本不会被发送到服务器,PHP自然拿不到数据,写入文档也就没结果了。
下面是具体的修复步骤,一步步来就能解决问题:
1. 添加隐藏表单字段
在你的表单里新增一个隐藏的<input>,专门用来存储计算后的结果——只有表单元素的name属性对应值才会在提交时被发送给服务器:
<input type="hidden" name="answer_value" id="answer_hidden" value="">
2. 调整你的<div>标签
把div的disabled属性去掉(div不是表单控件,这个属性对它完全没用,反而容易误导),保留样式和ID即可:
<div id="answer_222" class="form-control" style="width: 100px;"></div>
3. 更新jQuery脚本
在你更新所有div文本的同时,同步更新隐藏input的值,这样表单提交时就能带上这个计算结果了。另外我发现你的脚本最后少了闭合的},一起帮你补上:
function checkValue(input) { console.log(input.value); if (input.value > 10000) { return input.value = 10000; } else if (input.value < 499){ return input.value = 500; } else { return input.value; } } $("#num1, #num2").focusout(function() { $("#answer").html(''); var num1 = $("#num1").val(); var num2 = $("#num2").val(); if (num2 > 10000) { $.alert({ title: 'Alert', content: 'Alert', }); num2 = 10000; } else if (num2 < 500 ) { $.alert({ title: 'Alert', content: 'Alert', }); num2 = 500; } var answer = num2 / num1; answer = answer.toFixed(5); // 更新所有展示用的div文本 $("#answer, #answer_212, #answer_222, #answer_2222").text(answer); // 同步更新隐藏input的值,确保表单能提交这个数据 $("#answer_hidden").val(answer); }); // 补上之前缺失的闭合括号
4. PHP端接收数据
现在你可以在PHP里通过$_POST['answer_value']拿到这个计算结果,然后执行写入文档等操作:
<?php if ($_SERVER['REQUEST_METHOD'] === 'POST') { // 接收隐藏字段的值,同时做默认值处理 $answer = $_POST['answer_value'] ?? ''; // 先验证值的合法性,避免无效数据 if (is_numeric($answer)) { // 这里执行写入文档的操作,比如追加到文件 file_put_contents('calculation_result.txt', $answer . PHP_EOL, FILE_APPEND); echo "计算结果已成功存储"; } else { echo "无效的数值,请检查输入"; } } ?>
关键知识点提醒
- 只有
<input>、<select>、<textarea>这类表单元素,且带有name属性的,才会在表单提交时把值发送给服务器,<div>、<span>这类普通元素不会被提交。 - 就算是表单元素,设置
disabled属性后,它的值也不会被包含在提交数据里。如果需要展示但不让用户修改,可以用readonly(针对input),或者用div展示+隐藏input存储的方式,就像我们上面做的这样。
内容的提问来源于stack exchange,提问作者x-magix
相关产品推荐
相关产品推荐

