Jquery 通过AJAX问题发送带有HTML注释的post请求
当我使用jQuery表单提交表单并进行POST提交时,我遇到了以下问题 在输入字段中键入HTML注释时:Jquery 通过AJAX问题发送带有HTML注释的post请求,jquery,ajax,forms,post,xmlhttprequest,Jquery,Ajax,Forms,Post,Xmlhttprequest,当我使用jQuery表单提交表单并进行POST提交时,我遇到了以下问题 在输入字段中键入HTML注释时: < !-- #without space after < symbol 唯一失败的情况是输入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']);