2012-02-28 13 views
1

私は非常に奇妙な問題を抱えています。Jquery .post()htmlコード

私はVimeoの埋め込みコードをコピー貼り付けるための入力フィールドを持つフォームを持っています。 フォームは、ajaxを介して提出されます。

入力フォームに埋め込みコード以外の何かを書き込むと問題なく動作します。 入力コードを貼り付けると、「ページが見つかりません」というエラーが返されます。私は2文字に絞り込んだ。 "> <"と入力するとエラーが表示されます。 「<>」と入力すると、スクリプトがパスします。

HTMLフォームは大丈夫ですので、javascriptコードを投稿します。私は放火犯を投稿何を見てみると、私はデータは私が脱出()、同じ問題を使用してみました

media%5Barticleid%5D=355&media%5Bembed_code%5D=%3Ciframe+src%3D%22http%3A%2F%2Fplayer.vimeo.com%2Fvideo%2F21350265%3Ftitle%3D0%26amp%3Bbyline%3D0%26amp%3Bportrait%3D0%22+width%3D%22398%22+height%3D%22224%22+frameborder%3D%220%22%3E%3C%2Fiframe%3E 

エスケープされていることがわかります

  //submit the video form 
      function submitVideoForm() { 
      var $inputs = $j('#form-add-video :input'); 
      var values = {}; 
      //loop through all the inputs and add them in an object 
      $j($inputs).each(function() { 
       values[this.name] = $j(this).val(); 
      }); 

      $j.post("http://www.mysite.com/admin/plugin/media/add_video/", values, 
       function(data){ 
        if (data != 'false') { 
         console.log('Worked'); 
        } 
        else { 
         console.log('Failed'); 
        }; 
      }, 'json'); 

      } 

(私はjQueryのを使用します)。

ご協力いただければ幸いです。

+0

「ページが見つかりません」というエラーはどこで発生していますか?フォームを提出しようとしたら?見つけられないURL(私的なサイトを削除してください)を私達に提供できますか? –

+0

エラーのスクリーンショットは次のとおりです:http://i.imgur.com/1Aw3C.jpg同じスクリプトのスクリーンショットですが、入力の値が異なります:http://i.imgur.com/NEAwY.jpg ちょうどあなたが知っている、私は以下のソリューション(encodeURIComponent、エスケープなど)で試してみました。文字列はエンコードされていますが、まだエラーが発生します。 –

+0

サーバはセキュリティ上の脅威とみなされ、%3E%3Cが見えるときにブロックします(ちょっと考えてください) – ajon

答えて

0

HTMLタグがコードに混乱する可能性があります。これに相当するHTMLエンティティに置き換えます。あなたはjQueryのを使用しているので、Snippet

+0

それはそれが言うことをするが、これは私の問題を解決しなかった。 –

0

は、serializingあなたのデータをお試しください。

$inputsvaluesvar values = $j('#form-add-video').serialize();に置き換え、入力をループする機能を削除します。 .serializeはすべてあなたのためにそれらをつかむでしょう。

OR、あなたはencodeURIComponent

例を試すことができます:values[this.name] = encodeURIComponent($j(this).val());

はencodeURIComponentで対encodeURI(対エスケープのさらなる議論)のためthis threadを参照してください。

+0

こんにちはジョン、私はそれを試みたが、それは役に立たなかった。文字列を正しくエンコードしましたが、 "ページが見つかりません"というエラーが発生しました。 –

+0

私の答えを編集する.serialize() –

+0

残念ながら、実際にはフォームではないので、私はserializeを使用できません。理由は、それがCMS用のプラグインで、既に

の中にラップされているからです。私はちょうどそれの小さな部分を投稿する必要があります。 –