如何将原始innerHTML 传递给php?

Posted

技术标签:

【中文标题】如何将原始innerHTML 传递给php?【英文标题】:How to pass original innerHTML to php? 【发布时间】:2017-09-20 06:18:14 【问题描述】:

用户选择文本并将其替换为 'a' tag id='NewLink',当他完成对单词或短语的描述时,服务器将获取内容 div 'StartId' 的 innerhtml。我需要忽略用户不会在浏览器中更改客户端的 html 代码。我该怎么做?

  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 
	   
     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) 
	   alert(data);
		  );
      
     
<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>

【问题讨论】:

用户可以更改 HTML 并仍然操纵请求正文,因此它会显示为客户端并未真正更改测试。请问你为什么需要这个? @Alon Eitan,我创建的网站与genius.com/11715748 类似,我需要在数据库中获取一个新的 html 来替换它。 this answer 会帮助您选择部分吗?因为看起来您的代码已经将实际的 innerHTML 发送到服务器 @Alon Eitan,如果我只选择字母“a”,我将如何获得文本中的哪一个?这对我没有帮助( 我想我需要通过加载页面复制 StartId 并将其更改为数据,我试图设置 setStart 和 setEnd 并徒劳地替换那里。 【参考方案1】:

将您的 $.post 代码更改为:

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

您的参数未正确序列化。

如果你的htmlInner是一个整数,你可以把参数改成这样:

'"htmlInner": '+ StartId + ''

【讨论】:

如果你的 htmlInner 是一个整数, / Stringifying the object??你在说什么。这个答案看起来不像一个可能的解决方案 - 。希望你是对的,我错了,所以它会帮助 OP...

以上是关于如何将原始innerHTML 传递给php?的主要内容,如果未能解决你的问题,请参考以下文章

将表单值传递给 PHP 包含在 HTML DOM innerHTML 中

PHP:如何获取当前的 innerHTML?

如何将innerHTML添加到从节点JS发送的静态文件中?

如何在 AndroidManifest 中指定多个活动,一个用于启动屏幕,一个用于 mainactivity - 将原始意图传递给 mainactivy

如何在不删除之前的 innerHTML 的情况下使用 innerHTML? [复制]

将原始 Markdown 文本传递给 Jade