1

JavaScriptを使用してページからページコンテンツ全体を取得し、htmlをデータベースにダンプするアプリケーションに取り組んでいます。ページには、リクエストを使用して解析および保存されるさまざまなコンポーネントがありますajax

 function saveContent(){    
    var $getContent = $('#mainWrap').clone();
    $getContent.find('.textBox, .pictureBox').removeAttr('id');
    var saveContent  = $getContent.wrap('<div></div>').html();
    var getBodyStyle=$('body').attr('style');
    var auto="auto";
    $.ajax({
        url:"save.php",
        type:"POST",
        dataType:"text",
        data:"txtComp="+saveContent+"&auto="+auto+"&pageId="+pageId+"&webId="+webId+"&userId="+userId+"&bodyStyle="+getBodyStyle,
        success:function(data){
            var options = {"text":data,"layout":"topCenter","type":"success","animateOpen": {"opacity": "show"}};
            setTimeout(function(){noty(options)}, 1000);
            //$('#draftMsg').html(data).fadeIn(500);
        }
    }); 
 }  

現在、facebook、twitter などのソーシャル メディア コンポーネントがあります。Facebook コンポーネントを保存しようとすると、'&' を使用してスクリプトに存在するいくつかのパラメーターが含まれているため、完全には保存されません。

    <div style="z-index: 1001; height: 560px; width: 413px; top: -20px; left: 121.5px;" id="com-IADDFSGNHLU7WNR3WM2KC3I8DA2DOIC6" class="facebookBox contentBox boxStyle">
    <div class="blankDiv"></div>
    <iframe class="facebookBoxObject" allowtransparency="true" style="border: medium none; overflow: hidden; height: 560px; width: 413px;" src="https://www.facebook.com/plugins/likebox.php?api_key=117096311791424&amp;locale=en_US&amp;height=560&amp;header=true&amp;show_faces=true&amp;stream=true&amp;width=413&amp;href=http://www.facebook.com/cbil360" frameborder="0" scrolling="no">
    </iframe>
   </div>

上記はデータベースに保存したいコンテンツであり、言うと取得しますconsole.logが、データベースには以下のコンテンツのみが保存されます

 <div style="z-index: 1001; height: 388px; width: 283px; top: -20px; left: 120.5px;" id="com-IADDFSGNHLU7WNR3WM2KC3I8DA2DOIC6" class="facebookBox contentBox boxStyle">
    <div class="blankDiv"></div><iframe class="facebookBoxObject" allowtransparency="true" style="border: medium none; overflow: hidden; height: 388px; width: 283px;" src="https://www.facebook.com/plugins/likebox.php?api_key=117096311791424

パラメータの後api_keyに & があるので壊れます。これでエラーが発生しないので確信が持てません。デバッグを試みましたが、まだ結論には達していません。どこが間違っているのかを修正してください。

更新:私が使用しているクエリは

$query = "insert into tbl_revision (userId,revisionContent,webId,pageId,status,saveType,dateAdded) values ('".$_SESSION['UserId']."','$revisionContent','$webId','$pageId','$status','$saveType','$toDate')"
4

2 に答える 2

1

入力文字列をエンコードし、出力文字列を htmlentities と html_entity_decode でデコードしようとしましたか?

于 2013-02-28T07:58:24.210 に答える
1

データがバックエンドに到達する前に問題が発生しているとは思えません。&クエリ文字列に a を通常の文字として含めているため、フロントエンドで発生しているため、混乱が生じます。私がお勧めするのは、変数をURL エンコードすることです ( HTMLエンコードではなくURLエンコード)。saveContent

encodeURIComponent(saveContent) //that will replace the & with it's corresponding url encoding

jquery $.ajax が提供する json フォームを使用して ajax リクエスト フィールドを送信することもできます。その例は次のようになります

 $.ajax({
        url:"save.php",
        type:"POST",
        dataType:"text",
        data:{txtComp: saveContent, auto: auto }, //etc
        success:function(data){
            var options = {"text":data,"layout":"topCenter","type":"success","animateOpen": {"opacity": "show"}};
            setTimeout(function(){noty(options)}, 1000);
            //$('#draftMsg').html(data).fadeIn(500);
        }
    }); 

また、その質問を見て、URL エンコーディングと HTML エンコーディングの違いを知ることをお勧めします

URLエンコードとHTMLエンコードの違い

于 2013-02-28T08:04:21.297 に答える