如何通过AJAX复制编辑textarea值并提交至另一textarea?代码排查
问题分析与解决方案
你的代码核心问题在于DOM处理冗余、请求参数格式错误,导致后端无法正确解析提交内容,以下是修正方案:
修正后的代码
$.ajax({ url: 'https://www48.myfantasyleague.com/2022/csetup?L=43570&C=HMPGMSG&SEQNO=34', xhrFields: { withCredentials: true }, cache: false, type: "GET", dataType: 'html', success: function (data) { // 提取textarea内容并转为临时DOM容器 var textareaContent = $(data).find('textarea').val(); var tmpElement = $('<div>' + textareaContent + '</div>'); // 直接为所有module标签添加YEAR属性 tmpElement.find("module").attr('YEAR', '2021'); // 将处理后的DOM转为HTML字符串 var processedContent = tmpElement.html(); $.ajax({ url: baseURLDynamic + "/" + year + "/message?LEAGUE_ID=" + league_id + "&NAME=message34", xhrFields: { withCredentials: true }, // 以键值对形式传递处理后的内容,方便后端接收 data: { content: processedContent }, beforeSend: function (jqXHR, settings) { console.log(settings.url); console.log("待提交内容:", processedContent); // 调试用,确认属性已添加 }, cache: false, type: "POST", success: function (response) { console.log("SUCCESS"); }, error: function (xhr) {} }); }, error: function (xhr) {} });
关键修改说明
- 移除冗余遍历:原代码中
$(tmpElement).each完全多余,tmpElement本身是单个div容器,直接调用find("module")即可选中所有目标标签 - 转换为HTML字符串:提交时不能直接传递jQuery对象,必须用
html()方法将DOM结构转为纯HTML文本 - 规范参数格式:POST请求的
data需为键值对形式,后端可通过对应参数名(比如示例中的content)获取处理后的内容 - 增加调试日志:
beforeSend中打印提交内容,方便确认YEAR属性是否已正确添加
内容的提问来源于stack exchange,提问作者MShack
相关产品推荐
相关产品推荐

