Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/238.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Javascript添加HTML代码而不转换转义字符?_Javascript_Php_Html_Ajax_Innerhtml - Fatal编程技术网

如何使用Javascript添加HTML代码而不转换转义字符?

如何使用Javascript添加HTML代码而不转换转义字符?,javascript,php,html,ajax,innerhtml,Javascript,Php,Html,Ajax,Innerhtml,我正在使用AJAX处理表单提交。AJAX请求返回一个带有文本字符串参数的javascript脚本。当我尝试将AJAX返回的脚本添加到现有页面时,遇到了一个问题 以下是我已经尝试完成的不同任务: newAjaxBlock.appendChild(document.createTextNode(ajaxRequest.responseText)); newAjaxBlock.innerHTML = ajaxRequest.responseText; newAjaxBlock.textContent

我正在使用AJAX处理表单提交。AJAX请求返回一个带有文本字符串参数的javascript脚本。当我尝试将AJAX返回的脚本添加到现有页面时,遇到了一个问题

以下是我已经尝试完成的不同任务:

newAjaxBlock.appendChild(document.createTextNode(ajaxRequest.responseText));
newAjaxBlock.innerHTML = ajaxRequest.responseText;
newAjaxBlock.textContent = ajaxRequest.responseText;
问题是,如果我使用.innerHTML插入返回的脚本,它会将参数文本字符串中的转义字符转换为它们的HTML等价物,并且由于字符串中的单引号和其他字符,脚本将抛出错误

我希望.innerHTML能够完全按照PHP提供的方式编写文本,而不会将转义字符意外转换为它们的HTML等价物

例如,我将用PHP生成一个脚本,并通过htmlspecialchars()运行它,生成一个文本字符串,如下所示:

<script type='text/javascript' id='layerScript'>Lib.alertFunction(arg1, $arg2, '<p>You changed THING from &quot;value1&quot; to &quot;newValue&quot;.</p>');</script>
Lib.alertFunction(arg1,$arg2,您将内容从“value1”更改为“newValue”。

);
但是,innerHTML将其转换为:

<script type='text/javascript' id='layerScript'>Lib.alertFunction(arg1, $arg2, '<p>You changed THING from "value1" to "newValue".</p>');</script>
Lib.alertFunction(arg1,$arg2,您将内容从“value1”更改为“newValue”。

);
正如您所看到的,该脚本无法使用单引号和其他字符来打乱参数列表

相反,当我尝试使用createTextNode或.textContent选项时,它会创建一个文本节点,忽略HTML标记,并将其全部显示为文本,而不是解释HTML。这对我来说并不奇怪,但是我没有任何选项,可以在编写HTML代码时不转换转义字符

除了脚本参数包含单引号或lt和gt符号外,所有代码都完全按照我的预期和需要工作,因此我知道我已经将问题缩小到了这一问题。我不需要jquery的建议,我知道我可以多花几天的时间编写一个函数来满足我的需要,但我想知道是否有什么东西可以满足我的需要。在浪费时间之前,innerHTML不需要转换转义字符


这个确切的问题已经被问到了,并用“use.textContent”得到了回答,正如我所提到的,它不能用AJAX插入格式化的HTML。

我真的不明白普通的“unescaped”字符有什么问题。此外,我认为大多数浏览器引擎会自动转换转义字符(不仅仅是通过javascript引入的字符),因为这是它们应该做的。您可以尝试检查源代码(不是通过webtools,而是显示源代码),查看它们是否转义(它们也在webtools中自动转换)