簡體   English   中英

通過AJAX問題發送帶有HTML注釋的帖子請求

[英]Sending a post request with HTML comment via AJAX issue

我使用jQuery FORM提交表單並進行POST提交時遇到以下問題。

當我在輸入字段中輸入HTML注釋時:

< !-- #without space after < symbol

該請求永遠不會被提交,它將永遠等待。

我相信原因是HTML注釋破壞了XMLHttpRequest對象,並且永遠不會用PHP對其進行解析。 我可以在提交之前解析輸入字段中的html注釋,但是有些信息告訴我,這不是解決此問題的最佳解決方案。 有誰知道避免此問題發生的最佳解決方案?

我的表單的HTML代碼如下:

<form method="post" action="/orders/place" class="form a-center" id="orderForm"> 
 <input type="text" x-webkit-speech="" value="Sign text" name="sign" id="sign">
 <textarea rows="7" name="comments" id="comments">Order comments</textarea>
 <p>
  <button id="orderSubmitBtn" class="button" type="submit">
 </p>        
</form>

Javascript是一個簡單的jQuery表單提交:

var options = {
 dataType: 'json',
 success: function(data) { 
   if (data.ok) {
     //do some action here!
   }
 }
};
$('#orderForm').ajaxSubmit(options); 

唯一失敗的情況是我輸入html注釋標簽的情況。

這也是指向包含http://sandsign.com格式的頁面的鏈接(只需嘗試在符號文本中輸入<!-文字,然后按放手按鈕即可)

不僅可以解析注釋,還可以在提交文本區域之前對其進行html編碼,然后在服務器中對其進行解碼。 這些是使用JQuery進行html編碼/解碼的功能:

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

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

通過( 當從輸入字段讀取屬性時,HTML編碼丟失

然后使用htmlentities在PHP中對其進行解碼:

http://php.net/manual/es/function.htmlentities.php

感謝RoToRa-我將研究范圍縮小到要發布的PHP腳本。 並意識到這是Zend Filter類中的一個錯誤:-(。

以下基於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']);

謝謝大家的建議!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM