2012-03-23 14 views
4

jQuery FORMを使用してフォームを送信してPOSTを送信しているときに、次の問題が発生しました。AJAXの問題でHTMLコメント付き投稿リクエストを送信する

私は、入力フィールドに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); 

それが失敗した場合のみ、ケースI入力ANありますHTMLコメントタグ。

。またこちらのフォームhttp://sandsign.com含むページへのリンクです - ちょうどコメントを解析する代わりに

+0

HTMLのコメントは問題ではないはずあなたには、いくつかのコードを表示することができ – RoToRa

+0

@RoToRaを、確認してください - それは単純なjQueryのフォームの送信です:。? 'VARオプション= { \tデータ型: 'JSON'、 \t成功するSS:機能(データ){ \t \t場合(data.ok) \t \t { \t \t \t //ここで何らかのアクションを行います! \t \t} \t} }; $( '#orderForm')。ajaxSubmit(options); ' また、常に動作します!それが失敗する唯一のケースは、私がhtmlコメントを入力した場合です。 –

+0

HTMLも。編集して質問にコードを追加してください。 – RoToRa

答えて

1

おかげ - 私は私が投稿している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']); 

おかげで皆を!アドバイスのために

1

(!ただ、<を入力してみてくださいを押してできます標識テキストGoボタンのテキスト)、あなたはエンコーディングをhtmlの可能性テキストエリアのコンテンツを送信してからサーバーでデコードします。これらは、jQueryを使ってエンコード/デコード何かをHTMLに機能している:

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

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

HTML-encoding lost when attribute read from input field

経由その後にhtmlentitiesとPHPでそれをデコード:RoToRaへ

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

関連する問題