我使用以下代码编码web应用程序中ckeditor的html源。
var updateString = app.getValue('wysiwygHomePage');
var encodedString = encodeURIComponent(updateString);
alert(encodedString);
app.httpRequest("www.xxxx.com/techy/savealldata.php", "GET", function(data, error, httpResponse){
alert(data);
},
{
"updateType":"homePage","updateString":encodedString}, "String", {}, {});
}
然后在PHP端我使用:
<?php
$updateType = $_GET["updateType"];
$updateString = $_GET["updateString"];
$updateString2 = urldecode($updateString);
echo 'success here '.$updateType .' '.$updateString2 ;
?>
我正在添加一些彩色tex和html源为这是:
<p>
<span style="color: rgb(255, 140, 0);">123</span><br />
</p>
<p>
在剪切和粘贴超过32次之前,这个工作正常。
然后我从PHP调用中返回error
。
我猜有很多字符到达PHP端??
你知道为什么会这样吗?
WARBY先生。
已更新的PHP代码
<?php
include 'dbdata.php';
$updateType = $_POST["updateType"];
$updateString = $_POST["updateString"];
$updateString2 = urldecode($updateString);
//echo 'success here '.$updateType .' '.$updateString2 ;
if($updateType === 'homePage')
{
$query5 = "UPDATE pageText SET HTML= "."'".$updateString2."'"." WHERE ID = 12";
//echo $query5;
echo 'Home Page Updated 2';
mysql_query($query5);
}
if($updateType === 'instructionPage')
{
$query5 = "UPDATE pageText SET HTML= "."'".$updateString2."'"." WHERE ID = 13";
echo 'Instruction Page Updated 2';
mysql_query($query5);
}
if($updateType === 'FAQPage')
{
$query5 = "UPDATE pageText SET HTML= "."'".$updateString2."'"." WHERE ID = 14";
echo 'FAQ Page Updated';
mysql_query($query5);
}
?>
这里有很多变量在起作用。您需要更改调试策略。与其每次都端到端测试,不如尝试隔离每个组件。
在Javascript中,调用"app.getValue('wysiwygHomePage')",编码字符串,解码字符串,并将其放回编辑器中。在循环中执行此操作,直到您可以确定客户端是否混淆了任何内容。
如果没有,尝试在Javascript中编码一个复杂的字符串,将其发送给PHP脚本,该脚本解码/重新编码并返回它。在循环中多次执行此操作。
如果你还没有发现问题,试着做一个PHP脚本,一个复杂的字符串,插入它,选择它,更新它在一个循环,看看你的数据库编码或转义是否影响它。
如果在任何时候你发现字符串在不应该的情况下发生了变化,那么你可能找到了问题所在。