post和Ajax之后的字符串比较

时间:2016-01-14 12:10:28

标签: javascript php jquery ajax

我有一个页面,当页面加载时,textarea填充了数据库中的值。我想看看是否修改了该值。 我使用jquery从textarea获取值:

fields.care_advice_message = $('#care_advice_message').val();

并通过ajax发送:

$.ajax({
  type: "POST",
  url: "page.php",
  data: fields
}).done(function(data){ ..}

在page.php上,我将通过ajax接收的字符串与数据库中的字符串进行比较,每次收到字符串都不同。

if(trim($_POST['care_advice_message']) !== trim($organization_data['care_advice_message']))
{
    echo " different " . strlen($_POST['care_advice_message']) . " " .    strlen($organization_data['care_advice_message']);
}
else {
    echo " same ";
}

我使用var_dump查看page.php上的字符串

var_dump($_POST['care_advice_message']);
var_dump($organization_data['care_advice_message']);

我收到了这个:

 <pre class='xdebug-var-dump' dir='ltr'><small>string</small> <font    color='#cc0000'>'text line&#10;new text line&#10;another line'</font> <i>(length=36)</i>
  </pre><pre class='xdebug-var-dump' dir='ltr'><small>string</small> <font color='#cc0000'>'text line&#13;&#10;new text line&#13;&#10;another line'</font> <i>(length=38)</i>

为什么来自ajax帖子的字符串只有“&amp;#10;” unicode但是从数据库我有“&amp;#13;”太?

如果我提交表单,那么字符串是相同的。

2 个答案:

答案 0 :(得分:0)

我认为这取决于你的字符串在插入数据库之前是如何受到威胁的。 您可能知道,字符串中的新行可以用&#34; \ r \ n&#34;进行符号化。

&#34;&安培; #10;&#34; &LT; =&GT; \ n(0x10)

&#34;&安培; #13;&#34; &LT; =&GT; \ r \ n(0x13)

因此,在您的用户的文本数据中,不存在回车符。 您能告诉我们您的文本如何插入数据库吗?

答案 1 :(得分:0)

替换所有空格

str_replace(" ","",$yourstring)

和新行字符

str_replace("\n","",$yourstring);

并通过

将其转换为小写
strtolower($yourstring);

然后尝试比较它。