Jquery 通过AJAX问题发送带有HTML注释的post请求

Jquery 通过AJAX问题发送带有HTML注释的post请求,jquery,ajax,forms,post,xmlhttprequest,Jquery,Ajax,Forms,Post,Xmlhttprequest,当我使用jQuery表单提交表单并进行POST提交时,我遇到了以下问题 在输入字段中键入HTML注释时: < !-- #without space after < symbol 唯一失败的情况是输入html注释标记 这里还有一个链接,指向包含表单的页面(只需尝试输入

当我使用jQuery表单提交表单并进行POST提交时,我遇到了以下问题

在输入字段中键入HTML注释时:

< !-- #without space after < symbol
唯一失败的情况是输入html注释标记


这里还有一个链接,指向包含表单的页面(只需尝试输入<!--符号文本中的文本一个按下释放按钮)

而不是只解析注释,您可以在提交之前对textarea内容进行html编码,然后在服务器中对其进行解码。以下是使用JQuery对某些内容进行html编码/解码的函数:

function htmlEncode(value){
  return $('<div/>').text(value).html();
}

function htmlDecode(value){
  return $('<div/>').html(value).text();
}
函数htmlEncode(值){
返回$('').text(value.html();
}
函数htmlDecode(值){
返回$('').html(value.text();
}
通过()

然后在PHP中使用htmlentities对其进行解码:


多亏了RoToRa,我把研究范围缩小到了发布到的PHP脚本。并意识到这是Zend Filter类中的一个bug:-(

由于某种原因,以下带有Zend Framework的PHP代码在接收<!--作为POST参数时会永久冻结:

$filterChain = new Zend_Filter();
$filterChain->addFilter(new Zend_Filter_StringTrim())
            ->addFilter(new Zend_Filter_StripTags());
$this->getHelper('viewRenderer')->setNoRender();
$signFiltered   = $filterChain->filter($_POST['sign']);

谢谢大家的建议!

HTML注释应该无关紧要。你能展示一些代码吗?@RoToRa,当然-这只是一个简单的jQuery表单提交:
var options={dataType:'json',success:function(data){if(data.ok){//do some action here!}};$('#orderForm')。ajaxSubmit(options)
它也总是有效的!唯一失败的情况是我输入html注释。html也是。请通过编辑将代码添加到您的问题中。据我所知,这应该可以正常工作。请参阅:。文本字段中的html注释不会像您描述的那样对表单提交产生任何影响。您确定没有这样做吗其他的东西,比如将注释字段的内容写入元素的
innerHTML
$().html(…)
)中?
function htmlEncode(value){
  return $('<div/>').text(value).html();
}

function htmlDecode(value){
  return $('<div/>').html(value).text();
}
$filterChain = new Zend_Filter();
$filterChain->addFilter(new Zend_Filter_StringTrim())
            ->addFilter(new Zend_Filter_StripTags());
$this->getHelper('viewRenderer')->setNoRender();
$signFiltered   = $filterChain->filter($_POST['sign']);