2017-04-23 4 views
3

ユーザーはテキストを選択し、 'a'タグid = 'NewLink'に置き換えられます。サーバーがコンテンツdiv 'StartId'のinnerHTMLを取得する単語またはフレーズの説明を終了します。私は、ユーザーがブラウザのクライアント側でhtmlコードを変更しないことを見落とす必要があります。私はそれをどのようにすることができますか?元のinnerHTMLをPHPに渡すには?

function GetSelectedText() { 
 
    var sel = window.getSelection(); 
 
      
 
    if(sel.toString().length != 0 && sel.getRangeAt) { 
 
    $('#NewLink').replaceWith($('#NewLink').html()); 
 

 
    var rng, se, err, errt, patt; 
 
    errt = 0; 
 
    try { 
 
\t  
 
    se=$('<span style="background-color: #3366CC;" id="NewLink">')[0]; 
 

 
     rng=sel.getRangeAt(sel.rangeCount-1); 
 
     rng.surroundContents(se); 
 
     rng.selectNode(document.getElementById("NewLink")); 
 
     } catch (err) { errt = 1;} 
 
    
 
     if(errt != 1) 
 
     { 
 
     patt=new RegExp("</?a.*?>","g"); 
 
     if (patt.test($("#NewLink").html()) ||$("#NewLink").closest("a").length||!$("#NewLink").text().replace(/\s/g,"").length) 
 
     {$("#NewLink").replaceWith($("#NewLink").html()); } 
 
     else { rng.collapse(!0);} 
 
     } 
 
    } 
 
    var StartId = document.getElementById("StartId").innerHTML; 
 
    $.post('site.com', {htmlInner:StartId}, function(data) { 
 
\t alert(data); 
 
\t \t }); 
 
     
 
    }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="StartId" onmouseup="GetSelectedText()"> 
 
Carnotaurus, a large theropod dinosaur, lived during the Late Cretaceous period. Known from a single well-preserved skeleton found in Argentina, it is a member of the Abelisauridae family<a href="#">and one of the best-understood theropods from the Southern Hemisphere. <br>Carnotaurus (derived from Latin for "meat-eating bull") <br> had thick horns above the eyes, and a very deep skull on a muscular neck.</a> <br>It was a lightly built, bipedal predator, 8 to 9 m (26.2 to 29.5 ft) long, weighing at least 1.35 metric tons (1.49 short tons). It had small, vestigial forelimbs and long and slender hindlimbs. Preserved skin impressions show a mosaic of small scales interrupted by large bumps that lined the sides of the animal. </div> 
 
<div id="EndId"></div>

+0

ユーザーがHTMLを変更して、まだテストは実際にはなかったとして、それが表示されますので、リクエストボディを操作することができますクライアントによって変更されました。なぜあなたはこれを必要としているのでしょうか? –

+0

@ Alon Eitan、私はhttps://genius.com/11715748のような同様の機能を持つウェブサイトを作っています。新しいhtmlをデータベースに置き換える必要があります。 –

+0

あなたは選択部分を手伝ってくれますか?[回答](http://stackoverflow.com/a/5379408/754119)あなたのコードが既に実際のinnerHTMLをサーバーに送信しているように見えるので、 –

答えて

0

変更これまでご$.postコード:適切にシリアライズされていない

$.post('site.com', '{"htmlInner":"' + StartId + '"}', function(data) { 
     alert(data); 
    });   
} 

あなたのパラメータ。

あなたhtmlInnerが整数である場合、あなたはこれにパラメータを変更することができます。

'{"htmlInner": '+ StartId + '}'

+0

あなたのhtmlInnerは_この答えは、可能な解決策のようには見えません - あなたの権利を願って、私は間違っていますので、OPに役立ちます... –

関連する問題