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

时间:2013-02-12 06:49:26

标签: php javascript post

我很难将TinyMCE,Ajax和PHP Post结合使用到ExpressionEngine数据库。 TinyMCE区域在网站加载时从我的数据库收集数据,我可以用丰富的文本对其进行编辑。

但是,当我使用ajax和POST将这些更改保存到PHP时,只要字符串包含&nbsp;,字符串就会被删除。我没有尝试过任何其他特殊字符,但它接受<p><h1>

PHP代码如下所示:

$tinyMCEData = $_POST['tinyMCEData'];

当我回应这个时,它就被切断了。我试图在通过Ajax发送之前替换它,但我还没有运气。我不在乎是否还有,只要它被接受。

我也尝试过这样的好处:

$tinyMCEData = htmlentities($_POST['tinyMCEData']);

也没有运气。那为什么会这样呢?我猜这是有原因的。任何帮助非常感谢!

编辑:我的案例与此问题的示例完全相同: TinyMCE + Jquery + PHP + AJAX Special chars issue

仅提醒警告框的两个屏幕截图。我在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 

3 个答案:

答案 0 :(得分:1)

您遇到语法错误:

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
});

还有成功和失败定义为功能吗?

答案 1 :(得分:0)

complex857是对的!我只需要在发送到POST之前转义字符串。 像这样:

var tinyMCEData = escape(tinyMCEData);

答案 2 :(得分:0)

对于仍然存在此问题的人的另一种解决方案(特别是如果您想提交更多详细信息)...

我将文本数据与其他变量分开,而不是使用数据字符串。然后确保其中一个变量包含您的文本

std::priority_queue< int, std::vector<int>, std::greater<int> > pq;