Javascript 将HTML元素从服务器端添加回客户端

Javascript 将HTML元素从服务器端添加回客户端,javascript,java,jquery,html,ajax,Javascript,Java,Jquery,Html,Ajax,我试图让一篇文章转到后端,并从我的ajax文章中获取元素。我的后端是Java,它将HTML字符串发送回客户端。我希望在用户按下post后,这个字符串在某个标记后显示为HTML ajax邮政编码: var saveSafetyData = new FormData(); saveSafetyData.append("statusNonUs", statusNonUs.value); saveSafetyData.append("issuedBy", issuedBy.value); var ent

我试图让一篇文章转到后端,并从我的ajax文章中获取元素。我的后端是Java,它将HTML字符串发送回客户端。我希望在用户按下post后,这个字符串在某个标记后显示为HTML

ajax邮政编码:

var saveSafetyData = new FormData();
saveSafetyData.append("statusNonUs", statusNonUs.value);
saveSafetyData.append("issuedBy", issuedBy.value);
var entryDate = document.getElementById("entryDate");
saveSafetyData.append("entryDate", entryDate.value);
var effectiveDateNonUs = document.getElementById("effectiveDateNonUs");
saveSafetyData.append("effectiveDateNonUs", effectiveDateNonUs.value);
var expirationDate = document.getElementById("expirationDate");
saveSafetyData.append("expirationDate", expirationDate.value);
saveSafetyData.append("action", "saveNonUsSafetyData");

$.ajax({
      type: "post",
      url: "carrierProfile",
      data: saveSafetyData,
      processData: false,
      contentType: false,
      success: function (responseData, textStatus, jqXHR) {
             modalSafety.style.display = "none";
             $("#nonUsSafetyForm").trigger("reset");                                
             $("#tabs-3").append("${createNonUsSafety}");
      },
      error: function (jqXHR, textStatus, errorThrown) {
             console.log(errorThrown);
      }
});
所有的输入都是从一个模式中提取的,一旦用户点击save,它就会发布到后端。到目前为止,我已经尝试了
$(#tabs-30).append(htmlString)
,但是我在那一行上得到了一个错误,它说:

缺少)参数列表之后

下面是错误所在的位置和显示的内容

$("#tabs-3").append("<div id="nonUsSafetyTable" class="carrierViewItem">

我假设我的HTML字符串中的某些内容导致未显示这些字符串的结尾,从而导致该错误。

我不明白在生成HTML字符串时为什么要使用
\n

换行符不是呈现HTML所必需的,只是为了让它更易于人类阅读

尝试从服务器端代码中删除
\n
,可能会起作用

i、 e.替换:

"<div id=\"nonUsSafetyTable\" class=\"carrierViewItem\">\n" 
“\n”
据此:

"<div id=\"nonUsSafetyTable\" class=\"carrierViewItem\">" 
“”
更改此语句

$("#tabs-3").append("${createNonUsSafety}");

尝试将\(java代码中的反斜杠和双引号)替换为单引号(')。应该可以

"<div id='nonUsSafetyTable' class='carrierViewItem'>\n"
“\n”
让我知道这是否有效

建议: 我想说的是改进代码。在java端创建html不是一个好主意,它总是容易出错,而且很难调试。
相反,您应该在JavaBean对象中设置这些属性,然后在UI中呈现这些属性。

尝试删除“(双引号)
$(“#tabs-3”).append(${createNonUsSafety})
我这样做了,我得到一个语法错误:“我想您可能需要:$(“#tabs-3”).append(jqXHR.createNonUsSafety);@peeto我试过了,但是html没有出现。需要刷新页面吗?不应该。试一下cosole.log(responseData)和/或console.log(jqXHR)看看Java是否被感知。虽然所有的html代码现在都出现了,但我似乎仍然会遇到同样的错误。这不再只是第一部分了。console.log(responseData)将此添加到成功调用中并检查从post响应中重新运行的对象我这样做了,并在$(“#addNonUsSafety”).append(${createNonUsSafety}”)之后设置一个警报。警报显示了我输入的HTML字符串。但我的表没有显示在UI中。是否需要刷新页面才能显示它?尝试使用
$(“#addNonUsSafety”).html(${createNonUsSafety}”)
并删除警报。它不需要刷新。它仍然没有显示,我检查了我的开发人员控制台,但它也没有显示。现在我在代码中看到您将html附加到“tabs-3”div,所以请使用
$(“#tabs-3”).html(${createNonUsSafety})
而不是
$(“#addNonUsSafety”).html(”${createNonUsSafety}“
。您的代码中不存在这样的div“addNonUsSafety”,因此它没有显示出来。我对.html()的作用感到困惑。我以为它检索到了元素内容?如果括号中有一个ID,它基本上会使用.innerHTML?
$("#tabs-3").html("${createNonUsSafety}");
"<div id='nonUsSafetyTable' class='carrierViewItem'>\n"