从javascript发送html源到PHP时出错


Error when sending html source from javascript to PHP

我使用以下代码编码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 />
&nbsp;
</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脚本,一个复杂的字符串,插入它,选择它,更新它在一个循环,看看你的数据库编码或转义是否影响它。

如果在任何时候你发现字符串在不应该的情况下发生了变化,那么你可能找到了问题所在。