【问题标题】:Getting tinymce contents stops when a special character is encountered遇到特殊字符时停止获取 tinymce 内容
【发布时间】:2013-07-07 13:27:02
【问题描述】:

我无法弄清楚为什么我的 php 处理脚本在遇到 tinymce 文本区域中的特殊字符时会停止。 例如,如果我输入 foo 并提交,很好...没有问题,但是如果我输入 foo

获取内容

var c = tinyMCE.get('content').getContent();

并发送内容

ajax.send("action=edit_content&c="+c+"&id="+id);

我可以在 firebug 中看到正在传递字符串

action=edit_content&c=<p>foo &lt;&lt;&lt;</p>&id=8

而 php 真的没什么特别的,只需将帖子设置为 var

可能是因为 &amp;lt; 中的 & ?也许它认为这实际上是另一个 post 参数?

谈到 ajax 时,我仍然感到很困惑。如果我的假设是正确的,我该如何解决?

【问题讨论】:

  • 是的,可能。显示QUERY_STRING$_GET。改用 POST,或 url encoding.

标签: php tinymce


【解决方案1】:

你的想法是对的。 & 号破坏了 URL 字符串。

为了修复中断字符,您必须escape 字符串。

试试这个:

ajax.send("action=edit_content&c="+escape(c)+"&id="+id);

您可能不必这样做(因为 Apache 会为您完成),但如有必要,您也可以在 PHP 端使用 urldecode 取消转义字符串:

<?php echo urldecode($_GET['c']); ?>

【讨论】:

  • 太棒了!现在可以了,但我看到它也为标记增加了很多。我最好在发送它之前设置一个正则表达式,以便它找到所有这些并用其他东西替换它们然后让php在处理后再次将其替换回来,然后再将其放入数据库
  • 没有。这就是escape 所做的——它用预定义的 url 安全字符串替换特殊字符。不要重新发明轮子。使用其他人都使用的系统。
  • 看看这个问题:stackoverflow.com/questions/6986742/… 另一个可能的解决方案,escape() 在我的情况下转换“太多”字符串。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-12
  • 1970-01-01
  • 2011-04-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多