【问题标题】:String comparations after post and Ajaxpost和Ajax之后的字符串比较
【发布时间】:2016-01-14 12:10:27
【问题描述】:

我有一个页面,当页面加载时,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 帖子的字符串只有“& #10;” unicode 但从数据库中我有“ ”也是?

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

【问题讨论】:

  • 这不是一个确定的解决方案,所以请评论:尝试将您的响应包装在 JSON 中。
  • 我在 json 中发送我的字符串消息,如果这就是你的意思。 “字段”变量是一个 json
  • 我在谈论响应(php),除此之外:据我所知,字段不是 json。致电.serializeObject()
  • 如果你想将它作为 JSON 返回,你是否使用了正确的响应头?
  • 我不想以 JSON 格式返回它,我只想检查 textarea 中的文本是否被修改。我使用 var_dump 只是为了查看字符串有何不同。

标签: javascript php jquery ajax


【解决方案1】:

替换所有空格

str_replace(" ","",$yourstring)

和换行符

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

并通过

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

然后尝试比较它。

【讨论】:

    【解决方案2】:

    我认为这取决于您的字符串在插入数据库之前受到的威胁。 您可能知道,字符串中的新行可以用“\r\n”来表示。

    " " \n (0x10)

    " " \r (0x13)

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

    【讨论】:

    • 我使用 $_POST['care_advice_message'] = filter_var($_POST['care_advice_message'],FILTER_SANITIZE_STRING);然后是一个简单的 sql 更新
    • 你应该使用准备好的语句,这样你就不必管理这个问题,而是尝试使用mysqli_espace_string而不是filter_var。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-17
    • 1970-01-01
    • 1970-01-01
    • 2021-09-14
    • 2011-05-06
    相关资源
    最近更新 更多