PHP-字符串在字符后被切碎

PHP-字符串在字符后被切碎,php,javascript,post,Php,Javascript,Post,我很难将TinyMCE、Ajax和PHP Post组合使用到ExpressionEngine数据库。当网站加载时,TinyMCE区域从我的数据库收集数据,我可以用富文本编辑它 但是,当我使用ajax和POST-to-PHP保存这些更改时,只要字符串包含,字符串就会被截断。我没有尝试任何其他特殊字符,但它接受和 PHP代码如下所示: $tinyMCEData = $_POST['tinyMCEData']; $tinyMCEData = htmlentities($_POST['tinyMCED

我很难将TinyMCE、Ajax和PHP Post组合使用到ExpressionEngine数据库。当网站加载时,TinyMCE区域从我的数据库收集数据,我可以用富文本编辑它

但是,当我使用ajax和POST-to-PHP保存这些更改时,只要字符串包含
,字符串就会被截断。我没有尝试任何其他特殊字符,但它接受

PHP代码如下所示:

$tinyMCEData = $_POST['tinyMCEData'];
$tinyMCEData = htmlentities($_POST['tinyMCEData']);
当我回音时,它在这一点被切断了。在通过Ajax发送之前,我已经尝试替换nbsp,但我还没有运气。我真的不在乎里面是否有一个秘密,只要它被接受

我也尝试过htmlentities,比如:

$tinyMCEData = $_POST['tinyMCEData'];
$tinyMCEData = htmlentities($_POST['tinyMCEData']);
那里也没有运气。那么为什么会发生这种情况呢?我想这是有原因的。非常感谢任何帮助

编辑:我的案例与此问题中的示例完全相同:

仅显示警报框底部的两个屏幕截图。我在tinyMCE编辑器中拥有的只是文本中不止一次的空格

Edit2:下面是javascript的外观:

var tinyMCEData = tinyMCE.activeEditor.getContent();
var pars = 'tinyMCEData=' + tinyMCEData;

var myAjax = new Ajax.Request(url, {
   method: 'post',
   postBody: 'pars,
   onSuccess: success,
   onFailure: failure
});
此时,正在发送的数据如下所示,例如:

<p>One two &nbsp;three &nbsp; four</p>
一二三四

php post之后的值是什么:

<p>One two 
一二

您有一个syntac错误:

var myAjax = new Ajax.Request(url, {
   method: 'post',
   postBody: 'pars,
   onSuccess: success,
   onFailure: failure
});
应该是

var myAjax = new Ajax.Request(url, {
   method: 'post',
   postBody: pars,
   onSuccess: success,
   onFailure: failure
});

此外,成功和失败是否定义为功能?

complex857是正确的!我只要把绳子解开就可以把它寄出去了。 像这样:

var tinyMCEData = escape(tinyMCEData);

另一个解决方案是为那些仍然对此有问题的人(尤其是如果你想提交更多细节的话)

我将文本数据与其他变量分离,而不是使用datastring。然后确保其中一个变量包含文本

data: {var1: var1,
       var2: var2,
       var3: var3}

听起来您正在将AJAX查询主体构建为字符串,并放弃转义
&
字符。您可以提交javascript部分将请求发送到后端吗?发送到PHP的数据看起来像什么?看起来这些错误是在你的PHP代码上游刚刚编辑了我的帖子来回答你的问题。我一次发送的字段远远不止一个。但是只有这个小区域需要丰富的文本,你的complex857让我走上了正确的轨道:)转义字符串。var tinyMCEData=逃逸(tinyMCEData);好像有用!抱歉,语法错误只是我粘贴代码时的错误。是的,成功函数和失败函数已经定义。只是没有在这里添加它们,因为它们现在只输出一些警报框。然而,这个问题是通过complex857提到的转义函数解决的:)我喜欢这个地方:)